diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java
index ad6e43d..b914f48 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/DefaultServerDeployer.java
@@ -21,6 +21,7 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.ui.statushandlers.StatusManager;
 import org.eclipse.virgo.ide.facet.core.FacetCorePlugin;
 import org.eclipse.virgo.ide.facet.core.FacetUtils;
 import org.eclipse.virgo.ide.manifest.core.BundleManifestCorePlugin;
@@ -248,7 +249,7 @@
 		} catch (IOException e) {
 			StatusUtil.error("Failed execution of deployer command " + serverCommand, e);
 		} catch (TimeoutException e) {
-			StatusUtil.error("Failed execution of deployer command " + serverCommand, e);
+			StatusUtil.error("Failed execution of deployer command " + serverCommand, e, StatusManager.SHOW);
 		}
 		return null;
 	}
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java
index 376328e..a91d060 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/utils/StatusUtil.java
@@ -24,10 +24,20 @@
  */
 public class StatusUtil {
 	public static void error(String message, Exception e) {
-		StatusManager.getManager().handle(	new Status(IStatus.ERROR, ServerCorePlugin.PLUGIN_ID,
-												"An IO Exception occurred.", e));
+		error(message, e, StatusManager.LOG);
 	}
-
+	/**
+	 * @param message
+	 *            the message to be reported
+	 * @param e
+	 *            the cause
+	 * @param style
+	 *            a bitmask of style bits as enumerated on {@link StatusManager}
+	 */
+	public static void error(String message, Exception e, int style) {
+		StatusManager.getManager().handle(
+				new Status(IStatus.ERROR, ServerCorePlugin.PLUGIN_ID, "An IO Exception occurred.", e), style);
+	}
 	public static void error(Exception e) {
 		if (e instanceof IOException) {
 			error("An IO Exception occurred.", e);
diff --git a/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java b/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java
index ae77534..e77cc9e 100644
--- a/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java
+++ b/org.eclipse.virgo.ide.runtime.ui/src/org/eclipse/virgo/ide/runtime/internal/ui/editor/ServerDeployEditorSection.java
@@ -16,6 +16,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.IMessageProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -115,11 +116,13 @@
 				if (updating) {
 					return;
 				}
+				getManagedForm().getMessageManager().removeMessages(port);
 				int newPort = -1;
 				try {
 					newPort = Integer.valueOf(port.getText());
 				} catch (NumberFormatException nfe) {
-					setErrorMessage(port.getText() + " is not a valid port number");
+					getManagedForm().getMessageManager().addMessage("MALFORMED-PORT", "Port must be a positive number",
+							null, IMessageProvider.ERROR, port);
 					return;
 				}
 				setErrorMessage(null);
@@ -138,14 +141,20 @@
 				if (updating) {
 					return;
 				}
-				int newTimeout = -1;
+				getManagedForm().getMessageManager().removeMessages(timeout);
+				Integer newTimeout = null;
 				try {
 					newTimeout = Integer.valueOf(timeout.getText());
 				} catch (NumberFormatException nfe) {
-					setErrorMessage(timeout.getText() + " is not a valid timeout");
+					getManagedForm().getMessageManager().addMessage("MALFORMED-TIMEOUT",
+							"Timeout must be a positive number", null, IMessageProvider.ERROR, timeout);
 					return;
 				}
-				setErrorMessage(null);
+				if (newTimeout < 5) {
+					getManagedForm().getMessageManager().addMessage("INVALID-TIMEOUT", "Timeout cannot be less than 5",
+							null, IMessageProvider.ERROR, timeout);
+					return;
+				}
 				updating = true;
 				execute(new ModifyDeployerTimeoutCommand(serverWorkingCopy, newTimeout));
 				updating = false;
@@ -217,6 +226,8 @@
 
 	@Override
 	public IStatus[] getSaveStatus() {
+		// this errors should never happen as the port and timeout controls now prevent the user
+		// from entering invalid values.
 		try {
 			Integer.valueOf(port.getText());
 		} catch (NumberFormatException nfe) {
