diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
index a9f8b4b..aafae20 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
@@ -236,7 +236,7 @@
 runtimeTargetCombo=&Target runtime:
 runtimeTargetNone=<None>
 runtimeTargetNewRuntime=&New...
-runtimeTargetRuntimePreferences=&Installed Runtimes...
+runtimeTargetRuntimePreferences=<a>Configure &Installed Runtimes...</a>
 runtimeTargetChildren=Include child projects
 
 # General dialogs
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ProjectPropertyPage.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ProjectPropertyPage.java
index 197d59d..2280935 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ProjectPropertyPage.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ProjectPropertyPage.java
@@ -63,7 +63,7 @@
 			GridLayout layout = new GridLayout();
 			layout.marginHeight = 0;
 			layout.marginWidth = 0;
-			layout.numColumns = 3;
+			layout.numColumns = 4;
 			layout.verticalSpacing = 10;
 			composite.setLayout(layout);
 			composite.setLayoutData(new GridData(GridData.FILL_BOTH));
@@ -71,7 +71,7 @@
 			Label label = new Label(composite, SWT.WRAP);
 			label.setText(Messages.prefProjectDescription);
 			GridData data = new GridData(GridData.FILL_HORIZONTAL);
-			data.horizontalSpan = 3;
+			data.horizontalSpan = 4;
 			data.widthHint = 200;
 			label.setLayoutData(data);
 
@@ -83,7 +83,7 @@
 				label = new Label(composite, SWT.NONE);
 				label.setText(Messages.prefProjectNotModule);
 				data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-				data.horizontalSpan = 3;
+				data.horizontalSpan = 4;
 				label.setLayoutData(data);
 			} else {
 				IModuleType mt = module.getModuleType();
@@ -95,7 +95,7 @@
 				
 					Label moduleKind = new Label(composite, SWT.NONE);
 					data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-					data.horizontalSpan = 2;
+					data.horizontalSpan = 3;
 					moduleKind.setLayoutData(data);
 					moduleKind.setText(module.getName() + " (" + mt.getName() + ")");
 				}
@@ -114,12 +114,12 @@
 					label = new Label(composite, SWT.WRAP);
 					label.setText(Messages.prefProjectNotConfigured);
 					data = new GridData();
-					data.horizontalSpan = 2;
+					data.horizontalSpan = 3;
 					label.setLayoutData(data);
 				} else {
 					final Table table = new Table(composite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
 					data = new GridData(GridData.FILL_HORIZONTAL);
-					data.horizontalSpan = 2;
+					data.horizontalSpan = 3;
 					data.heightHint = 70;
 					table.setLayoutData(data);
 					
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimeTargetComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimeTargetComposite.java
index 51eaf37..1290eae 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimeTargetComposite.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimeTargetComposite.java
@@ -35,6 +35,7 @@
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
 import org.eclipse.swt.widgets.Shell;
 /**
  * Dialog that prompts a user to change the target runtime.
@@ -110,6 +111,7 @@
 		
 		final Combo combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
 		data = new GridData(GridData.FILL_HORIZONTAL);
+		data.horizontalSpan = 2;
 		combo.setLayoutData(data);
 		
 		int sel = updateRuntimes();
@@ -180,8 +182,12 @@
 			new Label(parent, SWT.NONE);
 		}
 		
-		Button prefsButton = SWTUtil.createButton(parent, Messages.runtimeTargetRuntimePreferences);
-		prefsButton.addSelectionListener(new SelectionAdapter() {
+		Link prefLink = new Link(parent, SWT.NONE);
+		data = new GridData(GridData.HORIZONTAL_ALIGN_END);
+		data.horizontalSpan = 2;
+		prefLink.setLayoutData(data);
+		prefLink.setText(Messages.runtimeTargetRuntimePreferences);
+		prefLink.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
 				String currentRuntime2 = combo.getText();
 				if (showRuntimePreferencePage(parent.getShell())) {
