ready to use
authorpenk
Thu, 24 Jul 2003 13:52:04 +0200
changeset 5055 b3cba6441579
parent 5054 6782f53b6884
child 5056 40a205c037e3
ready to use
AbstractSettingsApplication.st
--- a/AbstractSettingsApplication.st	Tue Jul 22 20:06:42 2003 +0200
+++ b/AbstractSettingsApplication.st	Thu Jul 24 13:52:04 2003 +0200
@@ -3231,7 +3231,7 @@
 
 createServerFromFile
 
-    | newServer fileName runningServers newServerPort|
+    | newServer fileName runningServers newServerPort answer|
 
     runningServers := HTTPServer runningServers.
     fileName := Dialog requestFileName:'Select a HTTPServer Settings File'
@@ -3239,22 +3239,25 @@
             pattern:'*xml'
             fromDirectory:(Filename currentDirectory).
     fileName isEmptyOrNil ifTrue:[ ^ self].
-    newServer := HTTPServer serverFromSettingsFile:(fileName asFilename).
-    newServer notNil ifTrue:[
-        newServerPort := newServer port.
-        runningServers notEmpty ifTrue:[
-            runningServers do:[:aServer |
-                aServer port = newServerPort ifTrue:[
-                    Dialog warn:'There is already a Server for port ', newServerPort asString.
-                    ^ self
+    self withWaitCursorDo:[
+        newServer := HTTPServer serverFromSettingsFile:(fileName asFilename).
+        newServer notNil ifTrue:[
+            newServerPort := newServer port.
+            runningServers notEmpty ifTrue:[
+                [self hasServerForPort:newServerPort] whileTrue:[
+                    answer := Dialog 
+                        request:('There is already a Server for port ', newServerPort asString, ' Please select another one') 
+                        initialAnswer:self portNumberChannel value asString.  
+                    answer isEmpty ifTrue:[
+                        ^ self
+                    ].
+                    newServerPort := answer asNumber.
                 ]
-            ]
+            ].
+            newServer port:newServerPort.
+            runningServers addDependent:self.
+            self createServerApplicationFor:newServer.
         ].
-        runningServers addDependent:self.
-
-        self withWaitCursorDo:[
-            self createServerApplicationFor:newServer.
-        ]
     ].
 !
 
@@ -3272,6 +3275,16 @@
     ]
 !
 
+hasServerForPort:newServerPort
+
+    HTTPServer runningServers do:[:aServer |
+        aServer port = newServerPort ifTrue:[
+            ^ true
+        ]
+    ].
+    ^ false
+!
+
 readSettings
     HTTPServer isLoaded ifTrue:[
         HTTPServer runningServers removeDependent:self.
@@ -10856,5 +10869,5 @@
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.86 2003-07-16 09:02:02 penk Exp $'
-! !
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.87 2003-07-24 11:52:04 penk Exp $'
+! !