diff --git a/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/ISelectionActivatedListener.java b/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/ISelectionActivatedListener.java
new file mode 100644
index 0000000..8c48390
--- /dev/null
+++ b/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/ISelectionActivatedListener.java
@@ -0,0 +1,18 @@
+package org.eclipse.jface.viewers;
+
+/*
+ * (c) Copyright IBM Corp. 2000, 2001.
+ * All Rights Reserved.
+ */
+
+/**
+ * A listener which is notified of double-click events on viewers.
+ */
+public interface ISelectionActivatedListener {
+/**
+ * Notifies of a double click.
+ *
+ * @param event event object describing the double-click
+ */
+public void selectionActivated(SelectionActivatedEvent event);
+}
diff --git a/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/SelectionActivatedEvent.java b/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/SelectionActivatedEvent.java
new file mode 100644
index 0000000..e112bdf
--- /dev/null
+++ b/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/SelectionActivatedEvent.java
@@ -0,0 +1,49 @@
+package org.eclipse.jface.viewers;
+
+/*
+ * (c) Copyright IBM Corp. 2000, 2001.
+ * All Rights Reserved.
+ */
+import org.eclipse.jface.util.Assert;
+import java.util.EventObject;
+
+/**
+ * Event object describing a selection activated. The source of these
+ * events is a viewer.
+ *
+ * @see ISelectionActivatedListener
+ */
+public class SelectionActivatedEvent extends EventObject {
+
+	/**
+	 * The selection.
+	 */
+	protected ISelection selection;
+/**
+ * Creates a new event for the given source and selection.
+ *
+ * @param source the viewer
+ * @param selection the selection
+ */
+public SelectionActivatedEvent(Viewer source, ISelection selection) {
+	super(source);
+	Assert.isNotNull(selection);
+	this.selection = selection;
+}
+/**
+ * Returns the selection.
+ *
+ * @return the selection
+ */
+public ISelection getSelection() {
+	return selection;
+}
+/**
+ * Returns the viewer that is the source of this event.
+ *
+ * @return the originating viewer
+ */
+public Viewer getViewer() {
+	return (Viewer) getSource();
+}
+}
diff --git a/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/StructuredViewer.java b/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/StructuredViewer.java
index cb4147b..9ab8c67 100644
--- a/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/StructuredViewer.java
+++ b/bundles/org.eclipse.ui/Eclipse JFace/org/eclipse/jface/viewers/StructuredViewer.java
@@ -67,12 +67,38 @@
 	 * @see #fireDoubleClick
 	 */
 	private ListenerList doubleClickListeners = new ListenerList(1);
+
+	/**
+	 * List of selection-activated state listeners (element type: <code>ISelectionActivatedListener</code>).
+	 * @see #fireSelectionActivated
+	 */
+	private ListenerList selectionActivatedListeners = new ListenerList(1);
+	
+	/**
+	 * If true, selection is activated on single-click
+	 * otherwise selection is activated on double-click
+	 */
+	private static boolean activateSelectionOnClick = false;
+	
 /**
  * Creates a structured element viewer. The viewer has no input, 
  * no content provider, a default label provider, no sorter, and no filters.
  */
 protected StructuredViewer() {
 }
+
+public static void setActivateSelectionOnClick(boolean singleClick) {
+	activateSelectionOnClick = singleClick;
+}
+/**
+ * Adds a listener for selection activated in this viewer.
+ * Has no effect if an identical listener is already registered.
+ *
+ * @param listener a selection activated listener
+ */
+public void addSelectionActivatedListener(ISelectionActivatedListener listener) {
+	selectionActivatedListeners.add(listener);
+}
 /**
  * Adds a listener for double-clicks in this viewer.
  * Has no effect if an identical listener is already registered.
@@ -270,6 +296,20 @@
 	}
 }
 /**
+ * Notifies any selection-activated listeners that a selection has been activated.
+ * Only listeners registered at the time this method is called are notified.
+ *
+ * @param event a double-click event
+ *
+ * @see ISelectionActivatedListener#doubleClick
+ */
+protected void fireSelectionActivated(SelectionActivatedEvent event) {
+	Object[] listeners = selectionActivatedListeners.getListeners();
+	for (int i = 0; i < listeners.length; ++i) {
+		((ISelectionActivatedListener) listeners[i]).selectionActivated(event);
+	}
+}
+/**
  * Returns the filtered array of children of the given element.
  * The resulting array must not be modified,
  * as it may come directly from the model's internal state.
@@ -411,6 +451,8 @@
 		ISelection selection = getSelection();
 		updateSelection(selection);
 		fireDoubleClick(new DoubleClickEvent(this, selection));
+		if(!activateSelectionOnClick)
+			fireSelectionActivated(new SelectionActivatedEvent(this, selection));
 	}
 }
 /**
@@ -461,7 +503,10 @@
 	Control control = getControl();
 	if (control != null && !control.isDisposed()) {
 		updateSelection(getSelection());
+		if(activateSelectionOnClick)
+			fireSelectionActivated(new SelectionActivatedEvent(this, getSelection()));
 	}
+	
 }
 /**
  * Returns whether this viewer has any filters.
diff --git a/bundles/org.eclipse.ui/Eclipse UI Standard Components/org/eclipse/ui/views/navigator/ResourceNavigator.java b/bundles/org.eclipse.ui/Eclipse UI Standard Components/org/eclipse/ui/views/navigator/ResourceNavigator.java
index f9186bd..0fccfeb 100644
--- a/bundles/org.eclipse.ui/Eclipse UI Standard Components/org/eclipse/ui/views/navigator/ResourceNavigator.java
+++ b/bundles/org.eclipse.ui/Eclipse UI Standard Components/org/eclipse/ui/views/navigator/ResourceNavigator.java
@@ -180,6 +180,11 @@
 			handleSelectionChanged(event);
 		}
 	});
+	viewer.addSelectionActivatedListener(new ISelectionActivatedListener() {
+		public void selectionActivated(SelectionActivatedEvent event) {
+			handleSelectionActivated(event);
+		}
+	});
 	viewer.addDoubleClickListener(new IDoubleClickListener() {
 		public void doubleClick(DoubleClickEvent event) {
 			handleDoubleClick(event);
@@ -476,16 +481,28 @@
 void handleDoubleClick(DoubleClickEvent event) {
 	IStructuredSelection s = (IStructuredSelection)event.getSelection();
 	Object element = s.getFirstElement();
-	if (element instanceof IFile) {
-		runOpenFileAction(s);
-	}
-	else {
+//	if (element instanceof IFile) {
+//		runOpenFileAction(s);
+//	}
+//	else {
+	if (!(element instanceof IFile)) {
 		// 1GBZIA0: ITPUI:WIN2000 - Double-clicking in navigator should expand/collapse containers
 		if (viewer.isExpandable(element)) {
 			viewer.setExpandedState(element, !viewer.getExpandedState(element));
 		}
 	}
 }
+
+/**
+ * Handles selection activated events in viewer.
+ * Opens editor if file double-clicked.
+ */
+void handleSelectionActivated(SelectionActivatedEvent event) {
+	IStructuredSelection s = (IStructuredSelection)event.getSelection();
+	Object element = s.getFirstElement();
+	if (element instanceof IFile)
+		runOpenFileAction(s);
+}
 /**
  */
 void runOpenFileAction(IStructuredSelection s) {
@@ -510,8 +527,7 @@
 	updateStatusLine(sel);
 	goIntoAction.update();
 	updateGlobalActions(sel);
-	if(!linkToEditor(sel))
-		runOpenFileAction(sel);
+	linkToEditor(sel);
 }
 /* (non-Javadoc)
  * Method declared on IViewPart.
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
index fcdba8f..32a1aa7 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
@@ -10,6 +10,16 @@
  */
 public interface IWorkbenchPreferenceConstants {
 	
+	/**
+	 * A named preference for how a selection is activated.
+	 * If true, the selection is activated on single click
+	 * otherwise it is activated on double click.
+	 * <p>
+	 * Value is of type <code>boolean</code>.
+	 * </p>
+	 */
+	public static final String ACTIVATE_SELECTION_ON_CLICK = "ACTIVATE_SELECTION_ON_CLICK"; //$NON-NLS-1$
+ 
 	/*
 	 * A named preference for whether to show an editor when its
 	 * input file is selected in the Navigator (and vice versa).
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/EditorManager.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/EditorManager.java
index b48d4d0..eec9314 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/EditorManager.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/EditorManager.java
@@ -21,6 +21,7 @@
 import org.eclipse.jface.dialogs.*;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.operation.*;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
@@ -294,9 +295,12 @@
  *
  */
 private IReusableEditor findReusableEditor(EditorDescriptor desc) {
-	//Must get global preference: "Reuse opened editors".
-	//if(!reuseEditors)
-	//	return null;
+	
+	IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
+	boolean reuseEditors = store.getBoolean(IPreferenceConstants.REUSE_EDITORS);
+	if(!reuseEditors)
+		return null;
+	
 	IEditorPart editors[] = getEditors();
 	IReusableEditor dirtyEditor = null;
 	IWorkbenchPart activePart = page.getActivePart();
@@ -326,7 +330,7 @@
 	if(dirtyEditor == null)
 		return null;
 	
-	//Must get global preference: "Open new Editor when dirty"
+	//Should we have a global preference "Open new Editor when dirty"?
 	//if(openNewWhenDirty)
 	//	return null;
 	MessageDialog dialog = new MessageDialog(
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
index 18bb031..3fe4abc 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
@@ -29,5 +29,9 @@
 
 	//Do we show tabs up or down for editors
 	public static final String EDITOR_TAB_POSITION = "EDITOR_TAB_POSITION"; //$NON-NLS-1$
+	
+	// (boolean) If true a editor of the same type will be reused
+	// otherwise a new editor will be opened.
+	public static final String REUSE_EDITORS = "REUSE_EDITORS"; //$NON-NLS-1$
 
 }
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/Workbench.java
index 789ff23..4500c69 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/Workbench.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/Workbench.java
@@ -21,6 +21,8 @@
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.resource.*;
 import org.eclipse.jface.preference.PreferenceManager;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.swt.*;
@@ -392,6 +394,10 @@
 	
 	openWindows();
 	openWelcomeDialog();
+
+	IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
+	StructuredViewer.setActivateSelectionOnClick(
+		store.getBoolean(IWorkbenchPreferenceConstants.ACTIVATE_SELECTION_ON_CLICK));
 	
 	isStarting = false;
 	return true;
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
index 3457742..801bc22 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
@@ -300,6 +300,8 @@
 	store.setDefault(IPreferenceConstants.SAVE_ALL_BEFORE_BUILD, false);
 	store.setDefault(IPreferenceConstants.WELCOME_DIALOG, true);
 	store.setDefault(IWorkbenchPreferenceConstants.LINK_NAVIGATOR_TO_EDITOR, true);
+	store.setDefault(IWorkbenchPreferenceConstants.ACTIVATE_SELECTION_ON_CLICK, false);
+	store.setDefault(IPreferenceConstants.REUSE_EDITORS, false);
 	store.setDefault(IPreferenceConstants.VIEW_TAB_POSITION, SWT.BOTTOM);
 	store.setDefault(IPreferenceConstants.EDITOR_TAB_POSITION, SWT.TOP);
 	store.setDefault(
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
index ed8cd38..c303e67 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
@@ -10,6 +10,7 @@
 import org.eclipse.ui.internal.*;
 import org.eclipse.ui.part.*;
 import org.eclipse.jface.preference.*;
+import org.eclipse.jface.viewers.StructuredViewer;
 import org.eclipse.swt.*;
 import org.eclipse.swt.events.*;
 import org.eclipse.swt.layout.*;
@@ -22,6 +23,8 @@
 	private Button autoBuildButton;
 	private Button autoSaveAllButton;
 	private Button linkButton;
+	private Button activateSelectionOnClickButton;
+	private Button reuseEditorsButton; 
 
 	//Widgets for menu based perspective operation
 	private Button openInNewWindowButton;
@@ -112,6 +115,14 @@
 
 	linkButton = new Button(composite, SWT.CHECK);
 	linkButton.setText(WorkbenchMessages.getString("WorkbenchPreference.linkNavigator")); //$NON-NLS-1$
+	
+	activateSelectionOnClickButton = new Button(composite, SWT.CHECK);
+	activateSelectionOnClickButton.setText("Activate selection on single click");
+	//activateSelectionOnClickButton.setText(WorkbenchMessages.getString("WorkbenchPreference.activateSelectionOnClick")); //$NON-NLS-1$
+	
+	reuseEditorsButton = new Button(composite, SWT.CHECK);
+	reuseEditorsButton.setText("Reuse open editors");
+	//reuseEditorsIfSavedButton.setText(WorkbenchMessages.getString("WorkbenchPreference.reuseEditorsButton")); //$NON-NLS-1$
 
 	createSpace(composite);
 
@@ -128,6 +139,10 @@
 		store.getBoolean(IPreferenceConstants.SAVE_ALL_BEFORE_BUILD));
 	linkButton.setSelection(
 		store.getBoolean(IWorkbenchPreferenceConstants.LINK_NAVIGATOR_TO_EDITOR));
+	activateSelectionOnClickButton.setSelection(
+		store.getBoolean(IWorkbenchPreferenceConstants.ACTIVATE_SELECTION_ON_CLICK));
+	reuseEditorsButton.setSelection(
+		store.getBoolean(IPreferenceConstants.REUSE_EDITORS));
 
 	return composite;
 }
@@ -362,7 +377,13 @@
 	linkButton.setSelection(
 		store.getDefaultBoolean(
 			IWorkbenchPreferenceConstants.LINK_NAVIGATOR_TO_EDITOR));
-
+	activateSelectionOnClickButton.setSelection(
+		store.getDefaultBoolean(
+			IWorkbenchPreferenceConstants.ACTIVATE_SELECTION_ON_CLICK));
+	reuseEditorsButton.setSelection(
+		store.getDefaultBoolean(
+			IPreferenceConstants.REUSE_EDITORS));
+ 
 	//Perspective preferences
 	String defaultPreference =
 		store.getDefaultString(IWorkbenchPreferenceConstants.OPEN_NEW_PERSPECTIVE);
@@ -440,6 +461,17 @@
 		IWorkbenchPreferenceConstants.LINK_NAVIGATOR_TO_EDITOR,
 		linkButton.getSelection());
 
+	// store the activate selection on click setting
+	store.setValue(
+		IWorkbenchPreferenceConstants.ACTIVATE_SELECTION_ON_CLICK,
+		activateSelectionOnClickButton.getSelection());
+	StructuredViewer.setActivateSelectionOnClick(activateSelectionOnClickButton.getSelection());
+
+	// store the reuse editors setting
+	store.setValue(
+		IPreferenceConstants.REUSE_EDITORS,
+		reuseEditorsButton.getSelection());
+		
 	// store the open in new window settings
 	store.setValue(
 		IWorkbenchPreferenceConstants.OPEN_NEW_PERSPECTIVE,
