diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
index c67266b..125c5f1 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
@@ -18,18 +18,24 @@
  * IWorkbenchPartProgressService is an IProgressService that adds API for jobs
  * that change the state in a IWorkbenchPartSite while they are being run.
  * <p>
- * This service can be acquired from your service locator:
+ * This service can be acquired from your service locator (IWorkbenchPartSite):
+ * 
  * <pre>
+ * <code>
  * 	IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) getSite().getService(IWorkbenchSiteProgressService.class);
+ * </code>
  * </pre>
+ * 
  * <ul>
  * <li>This service is not available globally, only at the part site level.</li>
  * </ul>
  * </p>
  * <p>
  * WorkbenchParts may access an instance of IWorkbenchSiteProgressService by
- * calling <code>getSite.getAdapter(IWorkbenchSiteProgressService.class);</code>,
- * although getService(IWorkbenchSiteProgressService.class) is preferred.
+ * calling
+ * <code>getSite().getAdapter(IWorkbenchSiteProgressService.class);</code> ,
+ * although getSite().getService(IWorkbenchSiteProgressService.class) is
+ * preferred.
  * </p>
  * 
  * @see IWorkbenchPartSite#getAdapter(Class)
@@ -45,40 +51,49 @@
      */
     public static final String BUSY_PROPERTY = "SITE_BUSY"; //$NON-NLS-1$
 
-    /**
-     * Jobs scheduled with this method will cause the part's presentation 
-     * to be changed to indicate that the part is busy and in a transient 
-     * state until the job completes. Parts can also add customized busy 
-     * indication by overriding <code>WorkbenchPart.setBusy()</code>.
-     * If useHalfBusyCursor is true then the cursor will change to
-     * the half busy cursor for the duration of the job.
-     * @param job The job to schedule
-     * @param delay The delay in scheduling.
-     * @param useHalfBusyCursor A boolean to indicate if the half busy
-     * 		cursor should be used while this job is running.
-     * @see Job#schedule(long)
-     */
+	/**
+	 * Jobs scheduled with this method will cause the part's presentation to be
+	 * changed to indicate that the part is busy and in a transient state until
+	 * the job completes. Parts can also add customized busy indication by
+	 * overriding <code>WorkbenchPart.showBusy()</code>. If useHalfBusyCursor is
+	 * true then the cursor will change to the half busy cursor for the duration
+	 * of the job.
+	 * 
+	 * @param job
+	 *            The job to schedule
+	 * @param delay
+	 *            The delay in scheduling.
+	 * @param useHalfBusyCursor
+	 *            A boolean to indicate if the half busy cursor should be used
+	 *            while this job is running.
+	 * @see Job#schedule(long)
+	 */
     public void schedule(Job job, long delay, boolean useHalfBusyCursor);
 
-    /**
-     * Jobs scheduled with this method will cause the part's presentation 
-     * to be changed to indicate that the part is busy and in a transient 
-     * state until the job completes. Parts can also add customized busy 
-     * indication by overriding <code>WorkbenchPart.setBusy</code>.
-     * @param job The job to schedule
-     * @param delay The delay in scheduling.
-     * @see Job#schedule(long)
-     */
+	/**
+	 * Jobs scheduled with this method will cause the part's presentation to be
+	 * changed to indicate that the part is busy and in a transient state until
+	 * the job completes. Parts can also add customized busy indication by
+	 * overriding <code>WorkbenchPart.showBusy</code>.
+	 * 
+	 * @param job
+	 *            The job to schedule
+	 * @param delay
+	 *            The delay in scheduling.
+	 * @see Job#schedule(long)
+	 */
     public void schedule(Job job, long delay);
 
-    /**
-     * Jobs scheduled with this method will cause the part's presentation 
-     * to be changed to indicate that the part is busy and in a transient 
-     * state until the job completes. Parts can also add customized busy 
-     * indication by overriding <code>WorkbenchPart.setBusy</code>.
-     * @param job The job to schedule
-     * @see Job#schedule()
-     */
+	/**
+	 * Jobs scheduled with this method will cause the part's presentation to be
+	 * changed to indicate that the part is busy and in a transient state until
+	 * the job completes. Parts can also add customized busy indication by
+	 * overriding <code>WorkbenchPart.showBusy</code>.
+	 * 
+	 * @param job
+	 *            The job to schedule
+	 * @see Job#schedule()
+	 */
     public void schedule(Job job);
 
     /**
