AbstractSettingsApplication.st
changeset 5346 7d92545574ea
parent 5343 eead90057c14
child 5355 aa7b1d44d7a8
--- a/AbstractSettingsApplication.st	Thu Nov 13 16:14:30 2003 +0100
+++ b/AbstractSettingsApplication.st	Thu Nov 13 16:15:26 2003 +0100
@@ -84,7 +84,7 @@
 AbstractSettingsApplication subclass:#HTTPStartServerSettingsApplication
 	instanceVariableNames:'portNumberChannel informationLabel hasNoCreatedServerChannel
 		hasCreatedServerChannel'
-	classVariableNames:''
+	classVariableNames:'CreatedServers'
 	poolDictionaries:''
 	privateIn:AbstractSettingsApplication
 !
@@ -3241,6 +3241,27 @@
       )
 ! !
 
+!AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'servers access'!
+
+addCreatedServer:aServer
+    self createdServers add:aServer.
+!
+
+createdServers
+    CreatedServers isNil ifTrue:[
+        CreatedServers := Set new.
+    ].
+    ^ CreatedServers
+!
+
+removeAllCreatedServer
+    self createdServers removeAll.
+!
+
+removeCreatedServer:aServer
+    self createdServers remove:aServer.
+! !
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'actions'!
 
 basicSaveSettings
@@ -3270,6 +3291,7 @@
         ] ifFalse:[
             newServer := HTTPServer newServerOnPort:port.
         ].
+        self class addCreatedServer:newServer.
         self createServerApplicationFor:newServer.
     ]
 !
@@ -3324,6 +3346,7 @@
             ].
             newServer port:newServerPort.
             runningServers addDependent:self.
+            self class addCreatedServer:newServer.
             self createServerApplicationFor:newServer.
         ].
     ].
@@ -3331,14 +3354,17 @@
 
 createServerSubApplicationsForRunningServers
 
-    |runningServers|
+    |runningServers serverToStart|
 
     HTTPServer isLoaded ifFalse:[ ^ self].
 
-    runningServers := HTTPServer runningServers asOrderedCollection.
-    runningServers isEmpty ifTrue:[ ^ self].
-    runningServers sort:[:a :b | a port < b port].
-    runningServers do:[:aHttpServerInstance |
+    runningServers := HTTPServer runningServers.
+    serverToStart := runningServers asSet.
+    serverToStart addAll:self class createdServers.
+    serverToStart isEmpty ifTrue:[ ^ self].
+    serverToStart := serverToStart asOrderedCollection.
+    serverToStart sort:[:a :b | a port < b port].
+    serverToStart do:[:aHttpServerInstance |
         self createServerApplicationFor:aHttpServerInstance.
     ]
 !
@@ -3375,6 +3401,7 @@
     HTTPServer isLoaded ifTrue:[
         HTTPServer terminateAllServers.
     ].
+    self class removeAllCreatedServer.
     self removeAllServerSubApplications.
     self createdServerChanged.
 !
@@ -11017,5 +11044,5 @@
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.120 2003-11-13 12:56:53 cg Exp $'
-! !
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.121 2003-11-13 15:15:26 penk Exp $'
+! !