*** empty log message ***
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/BaseTreeView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/BaseTreeView.java
index 07f4051..71861b3 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/BaseTreeView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/BaseTreeView.java
@@ -10,6 +10,8 @@
 import org.eclipse.jface.action.*;

 import org.eclipse.swt.widgets.*;

 import org.eclipse.swt.events.*;

+import org.eclipse.update.internal.ui.UpdateUIPlugin;

+import org.eclipse.ui.*;

 

 /**

  * Insert the type's description here.

@@ -17,6 +19,7 @@
  */

 public abstract class BaseTreeView extends ViewPart {

 protected TreeViewer viewer;

+private Action showDetailsAction;

 /**

  * The constructor.

  */

@@ -84,15 +87,30 @@
 }

 

 protected void fillContextMenu(IMenuManager manager) {

+	manager.add(showDetailsAction);

 }

 

 protected void makeActions() {

+	showDetailsAction = new Action() {

+		public void run() {

+			IWorkbenchPage page = UpdateUIPlugin.getActivePage();

+			try {

+				IViewPart part = page.showView(UpdatePerspective.ID_DETAILS);

+				((DetailsView)part).selectionChanged(BaseTreeView.this, viewer.getSelection());

+			}

+			catch (PartInitException e) {

+				UpdateUIPlugin.logException(e);

+			}

+		}

+	};

+	showDetailsAction.setText("Show Details");

 }

 

 protected void handleSelectionChanged(SelectionChangedEvent e) {

 }

 

 protected void handleDoubleClick(DoubleClickEvent e) {

+	showDetailsAction.run();

 }

 

 protected void handleKeyPressed(KeyEvent e) {

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/ChecklistView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/ChecklistView.java
index ba76c75..d721e97 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/ChecklistView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/ChecklistView.java
Binary files differ
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/HistoryView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/HistoryView.java
index 8ac9c6a..bf90bc5 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/HistoryView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/HistoryView.java
@@ -18,11 +18,13 @@
 import org.eclipse.update.internal.ui.*;

 import org.eclipse.swt.custom.*;

 import org.eclipse.update.core.*;

-

+import org.eclipse.jface.action.Action;

 import org.eclipse.update.core.IInstallConfiguration;

 import java.util.*;

 import org.eclipse.swt.graphics.*;

 import org.eclipse.jface.resource.ImageDescriptor;

+import org.eclipse.jface.viewers.IStructuredSelection;

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

 

 /**

  * Insert the type's description here.

@@ -33,6 +35,7 @@
 private Image featureImage;

 private Image siteImage;

 private Image currentConfigImage;

+private Action revertAction;

 

 class HistoryProvider extends DefaultContentProvider 

 						implements ITreeContentProvider {

@@ -165,6 +168,42 @@
 	super.dispose();

 }

 

+private IInstallConfiguration getSelectedConfiguration() {

+	ISelection selection = viewer.getSelection();

+

+	if (selection instanceof IStructuredSelection &&

+			!selection.isEmpty()) {

+		IStructuredSelection ssel = (IStructuredSelection)selection;

+		if (ssel.size()==1) {

+			Object obj = ssel.getFirstElement();

+			if (obj instanceof IInstallConfiguration)

+			   return (IInstallConfiguration)obj;

+		}

+	}

+	return null;

+}

+

+protected void makeActions() {

+	super.makeActions();

+	revertAction = new Action() {

+		public void run() {

+			IInstallConfiguration target = getSelectedConfiguration();

+			if (target!=null)

+			   RevertSection.performRevert(target);

+		}

+	};

+	revertAction.setText("Restore");

+}

+

+protected void fillContextMenu(IMenuManager manager) {

+	IInstallConfiguration config = getSelectedConfiguration();

+	if (config!=null && !config.isCurrent()) {

+		manager.add(revertAction);

+		manager.add(new Separator());

+	}

+	super.fillContextMenu(manager);

+}

+

 public void currentInstallConfigurationChanged(IInstallConfiguration configuration) {

 	viewer.refresh();

 }

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/RevertSection.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/RevertSection.java
index a4c48b2..1849fd0 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/RevertSection.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/RevertSection.java
@@ -90,39 +90,43 @@
 		}

 	}

 	

-	public void performRevert() {

+	private void performRevert() {

 		try {

-			final ILocalSite localSite = SiteManager.getLocalSite();

+			ILocalSite localSite = SiteManager.getLocalSite();

 			IInstallConfiguration target = config;

 			if (config.isCurrent()) {

 				// take the previous one

 				IInstallConfiguration [] history = localSite.getConfigurationHistory();

 				target = history[history.length - 2];

 			}

-			final IInstallConfiguration ftarget = target;

-			IRunnableWithProgress operation = new IRunnableWithProgress() {

-				public void run(IProgressMonitor monitor) {

-					try {

-						localSite.revertTo(ftarget, monitor);

-					} catch (CoreException e) {

-						UpdateUIPlugin.logException(e);

-					} finally {

-						monitor.done();

-					}

-				}

-			};

-			try {

-				ProgressMonitorDialog dialog = new ProgressMonitorDialog(container.getShell());

-				dialog.run(false, true, operation);

-			}

-			catch (InvocationTargetException e) {

-				UpdateUIPlugin.logException(e);

-			}

-			catch (InterruptedException e) {

-			}

+			performRevert(target);

 		}

 		catch (CoreException e) {

 			UpdateUIPlugin.logException(e);

 		}

 	}

+	

+	public static void performRevert(final IInstallConfiguration target) {

+		IRunnableWithProgress operation = new IRunnableWithProgress() {

+			public void run(IProgressMonitor monitor) {

+				try {

+					ILocalSite localSite = SiteManager.getLocalSite();

+					localSite.revertTo(target, monitor);

+				} catch (CoreException e) {

+					UpdateUIPlugin.logException(e);

+				} finally {

+					monitor.done();

+				}

+			}

+		};

+		try {

+			ProgressMonitorDialog dialog = new ProgressMonitorDialog(UpdateUIPlugin.getActiveWorkbenchShell().getShell());

+			dialog.run(false, true, operation);

+		}

+		catch (InvocationTargetException e) {

+			UpdateUIPlugin.logException(e);

+		}

+		catch (InterruptedException e) {

+		}

+	}

 }
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/SiteView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/SiteView.java
index ef60476..dea6480 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/SiteView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/manager/SiteView.java
Binary files differ