[113853] Monitor connection timeout
diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties
index 0b82cdd..16b4d73 100644
--- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties
@@ -66,7 +66,7 @@
 remoteHost=&Host name:
 remotePort=&Port:
 parseType=&Type:
-connectionTimeout=&Connection Timeout:
+connectionTimeout=T&imeout (in milliseconds):
 
 preferenceDescription=Configure TCP/IP monitors on local and remote ports.
 prefShowView=S&how the TCP/IP Monitor view when there is activity
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/MonitorDialog.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/MonitorDialog.java
index 5c367de..618a54b 100644
--- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/MonitorDialog.java
+++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/MonitorDialog.java
@@ -26,6 +26,7 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.internet.monitor.core.internal.IProtocolAdapter;
@@ -39,22 +40,24 @@
 	protected boolean isEdit;
 	
 	private Button okButton;
-	private Text monitorPort;
-	private Text remotePort;
-	private Text timeout;
-	
+	private Spinner monitorPort;
+
 	interface StringModifyListener {
 		public void valueChanged(String s);
 	}
-	
+
 	interface BooleanModifyListener {
 		public void valueChanged(boolean b);
 	}
-	
+
 	interface TypeModifyListener {
 		public void valueChanged(IProtocolAdapter type);
 	}
 
+	interface IntModifyListener {
+		public void valueChanged(int i);
+	}
+
 	/**
 	 * Create a new monitor dialog.
 	 * 
@@ -103,7 +106,23 @@
 			});
 		return text;
 	}
-	
+
+	protected Spinner createSpinner(Composite comp, int v, final IntModifyListener listener) {
+		final Spinner s = new Spinner(comp, SWT.BORDER);
+		if (v != -1)
+			s.setSelection(v);
+		GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);
+		data.widthHint = 150;
+		s.setLayoutData(data);
+		if (listener != null)
+			s.addModifyListener(new ModifyListener() {
+				public void modifyText(ModifyEvent e) {	
+					listener.valueChanged(s.getSelection());
+				}
+			});
+		return s;
+	}
+
 	protected Combo createTypeCombo(Composite comp, final String[] types, String sel, final StringModifyListener listener) {
 		final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY);
 		int size = types.length;
@@ -142,10 +161,10 @@
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ContextIds.PREF_DIALOG);
 		
 		createLabel(composite, Messages.localPort);		
-		monitorPort = createText(composite, monitor.getLocalPort() + "", new StringModifyListener() {
-			public void valueChanged(String s) {
+		monitorPort = createSpinner(composite, monitor.getLocalPort(), new IntModifyListener() {
+			public void valueChanged(int i) {
 				try {
-					monitor.setLocalPort(Integer.parseInt(s));
+					monitor.setLocalPort(i);
 				} catch (Exception e) {
 					// ignore
 				}
@@ -170,10 +189,10 @@
 		});
 		
 		createLabel(group, Messages.remotePort);		
-		remotePort = createText(group, monitor.getRemotePort() + "", new StringModifyListener() {
-			public void valueChanged(String s) {
+		createSpinner(group, monitor.getRemotePort(), new IntModifyListener() {
+			public void valueChanged(int i) {
 				try {
-					monitor.setRemotePort(Integer.parseInt(s));
+					monitor.setRemotePort(i);
 				} catch (Exception e) {
 					// ignore
 				}
@@ -189,10 +208,10 @@
 		});
 		
 		createLabel(group, Messages.connectionTimeout);
-		timeout = createText(group, monitor.getTimeout() + "", new StringModifyListener() {
-			public void valueChanged(String s) {
+		createSpinner(group, monitor.getTimeout(), new IntModifyListener() {
+			public void valueChanged(int i) {
 				try {
-					monitor.setTimeout(Integer.parseInt(s));
+					monitor.setTimeout(i);
 				} catch (Exception e) {
 					// ignore
 				}
@@ -235,15 +254,6 @@
 			return;
 		
 		boolean result = true;
-		try {
-			Integer.parseInt(remotePort.getText());
-			Integer.parseInt(monitorPort.getText());
-			if (Integer.parseInt(timeout.getText()) < 0)
-				result = false;
-		} catch (Exception e) {
-			result = false;
-		}
-		
 		IStatus status = monitor.validate();
 		if (!status.isOK())
 			result = false;