--- a/AbstractSettingsApplication.st Wed Dec 21 14:01:46 2005 +0100
+++ b/AbstractSettingsApplication.st Wed Dec 21 16:34:57 2005 +0100
@@ -3241,7 +3241,7 @@
)
(InputFieldSpec
name: 'EntryField1'
- layout: (LayoutFrame 40 0 20 0 100 0 42 0)
+ layout: (LayoutFrame 40 0 20 0 111 0 42 0)
model: portNumberChannel
type: number
immediateAccept: true
@@ -3250,39 +3250,53 @@
acceptOnLostFocus: true
acceptOnPointerLeave: false
)
- (ActionButtonSpec
- label: 'Create new HTTP Server'
- name: 'Button4'
- layout: (LayoutFrame 125 0 20 0 -5 1 42 0)
- translateLabel: true
- model: createServer
- )
- (ActionButtonSpec
- label: 'Create Server from Settingsfile...'
- name: 'Button6'
- layout: (LayoutFrame 125 0 51 0 -5 1 73 0)
- translateLabel: true
- model: createServerFromFile
- )
- (ActionButtonSpec
- label: 'Remove all HTTP Servers'
- name: 'Button5'
- layout: (LayoutFrame 125 0 82 0 -5 1 104 0)
- translateLabel: true
- model: removeAllServers
- enableChannel: hasCreatedServerChannel
- )
- (CheckBoxSpec
- label: 'FastCGI'
- name: 'CheckBox1'
- layout: (LayoutFrame 19 0 57 0 116 0 79 0)
- model: useFcgiHolder
- translateLabel: true
+ (VerticalPanelViewSpec
+ name: 'VerticalPanel5'
+ layout: (LayoutFrame 136 0 14 0 -12 1 132 0)
+ horizontalLayout: fit
+ verticalLayout: spreadSpace
+ horizontalSpace: 3
+ verticalSpace: 3
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Create new HTTP Server'
+ name: 'Button4'
+ translateLabel: true
+ model: createServer
+ useDefaultExtent: true
+ )
+ (ActionButtonSpec
+ label: 'Create new FastCGI Server'
+ name: 'Button7'
+ translateLabel: true
+ model: createFcgiServer
+ useDefaultExtent: true
+ )
+ (ActionButtonSpec
+ label: 'Create Server from Settings File...'
+ name: 'Button6'
+ translateLabel: true
+ model: createServerFromFile
+ useDefaultExtent: true
+ )
+ (ActionButtonSpec
+ label: 'Remove all Servers'
+ name: 'Button5'
+ translateLabel: true
+ model: removeAllServers
+ enableChannel: hasCreatedServerChannel
+ useDefaultExtent: true
+ )
+ )
+
+ )
)
)
)
- extent: (Point 539 120)
+ extent: (Point 539 142)
)
)
@@ -3327,36 +3341,16 @@
^ self
!
+createFcgiServer
+ "create a FastCGI server"
+
+ ^ self createServerForClass:FCGIServer.
+!
+
createServer
-
- | newServer port runningServers|
-
- self withWaitCursorDo:[
- self serverClass isNil ifTrue:[
- self warn:'The "HTTPServer" class is missing - cannot create server.'.
- ^ self.
- ].
-
- port := self portNumberChannel value.
- runningServers := self serverClass runningServers.
- runningServers notEmpty ifTrue:[
- runningServers do:[:aServer |
- aServer port = port asInteger ifTrue:[
- Dialog warn:'There is already a Server for port ', port asString.
- ^ self
- ]
- ]
- ].
- runningServers addDependent:self.
-
- (port = self serverClass defaultPort) ifTrue:[
- newServer := self serverClass newServerWithDefaultServiceListOn:port.
- ] ifFalse:[
- newServer := self serverClass newServerOnPort:port.
- ].
- self class addCreatedServer:newServer.
- self createServerApplicationFor:newServer.
- ]
+ "create a default server - i.e. a HTTP server"
+
+ ^ self createServerForClass:self serverClass.
!
createServerApplicationFor:aServerInstance
@@ -3382,26 +3376,58 @@
settingsApp initialize.
!
+createServerForClass:serverClass
+
+ |newServer port runningServers|
+
+ serverClass isNil ifTrue:[
+ self warn:'The server class is missing - cannot create server.'.
+ ^ self.
+ ].
+
+ self withWaitCursorDo:[
+ port := self portNumberChannel value.
+ runningServers := serverClass runningServers.
+ runningServers notEmpty ifTrue:[
+ runningServers do:[:aServer |
+ aServer port = port asInteger ifTrue:[
+ Dialog warn:'There is already a server for port ', port asString.
+ ^ self
+ ]
+ ]
+ ].
+ runningServers addDependent:self.
+
+ (port = serverClass defaultPort) ifTrue:[
+ newServer := serverClass newServerWithDefaultServiceListOn:port.
+ ] ifFalse:[
+ newServer := serverClass newServerOnPort:port.
+ ].
+ self class addCreatedServer:newServer.
+ self createServerApplicationFor:newServer.
+ ]
+!
+
createServerFromFile
| newServer fileName runningServers newServerPort answer|
- runningServers := self serverClass runningServers.
- fileName := Dialog requestFileName:'Select a HTTPServer Settings File'
+ fileName := Dialog requestFileName:'Select a Server Settings File'
default:(self serverClass settingsFilename)
- pattern:'*xml'
- fromDirectory:(Filename currentDirectory).
+ pattern:'*.xml'.
+
fileName isEmptyOrNil ifTrue:[ ^ self].
self withWaitCursorDo:[
newServer := self serverClass serverFromSettingsFile:(fileName asFilename).
newServer notNil ifTrue:[
newServerPort := newServer port.
+ runningServers := self serverClass runningServers.
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:[
+ request:('There is already a server for port <1p>. Please select another one' expandMacrosWith:newServerPort)
+ initialAnswer:self portNumberChannel value printString.
+ answer isEmptyOrNil ifTrue:[
^ self
].
newServerPort := answer asNumber.
@@ -3417,29 +3443,25 @@
createServerSubApplicationsForRunningServers
- |runningServers serverToStart|
-
- (self serverClass notNil and:[self serverClass isLoaded]) ifFalse:[ ^ self].
-
- runningServers := self serverClass runningServers.
- serverToStart := runningServers asSet.
+ |serverToStart|
+
+ (self serverClass isNil or:[self serverClass isLoaded not]) ifTrue:[
+ ^ self
+ ].
+
+ serverToStart := self serverClass 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.
+ serverToStart isEmpty ifTrue:[
+ ^ self
+ ].
+ serverToStart := serverToStart asSortedCollection:[:a :b | a port < b port].
+ serverToStart do:[:eachServerInstance |
+ self createServerApplicationFor:eachServerInstance.
]
!
hasServerForPort:newServerPort
-
- self serverClass runningServers do:[:aServer |
- aServer port = newServerPort ifTrue:[
- ^ true
- ]
- ].
- ^ false
+ ^ self serverClass runningServers contains:[:eachServer| eachServer port = newServerPort].
!
helpFilename
@@ -3448,8 +3470,9 @@
readSettings
(self serverClass notNil and:[HTTPServer isLoaded]) ifTrue:[
- self serverClass runningServers removeDependent:self.
- self serverClass runningServers addDependent:self.
+ self serverClass runningServers
+ removeDependent:self;
+ addDependent:self.
].
self createServerSubApplicationsForRunningServers.
self createdServerChanged.
@@ -3472,16 +3495,17 @@
setPortOnFreePort
|highestUsedPortNr portToUse instances|
- (self serverClass notNil and:[self serverClass isLoaded]) ifFalse:[
- portToUse := 8080
- ] ifTrue:[
+ (self serverClass notNil and:[self serverClass isLoaded]) ifTrue:[
instances := self serverClass runningServers asSet.
- instances addAll:((settingsDialog getAllChildrenAppsForApplication:self) collect:[:aApp| aApp httpServerInstance]).
+ instances addAll:((settingsDialog getAllChildrenAppsForApplication:self)
+ collect:[:aApp| aApp httpServerInstance]).
highestUsedPortNr := instances
inject:(self serverClass defaultPort - 1)
into:[:maxSoFar :thisServer | thisServer port max:maxSoFar].
portToUse := highestUsedPortNr + 1
+ ] ifFalse:[
+ portToUse := 8080
].
self portNumberChannel value:portToUse.
! !
@@ -3522,13 +3546,6 @@
portNumberChannel := ValueHolder new.
].
^ portNumberChannel.
-!
-
-useFcgiHolder
- useFcgiHolder isNil ifTrue:[
- useFcgiHolder := false asValue.
- ].
- ^ useFcgiHolder.
! !
!AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'change & update'!
@@ -3545,11 +3562,9 @@
!
update:something with:aParameter from:changedObject
- self serverClass isLoaded ifTrue:[
- changedObject == self serverClass runningServers ifTrue:[
- self runningServersChanged.
- ^ self.
- ]
+ (self serverClass isLoaded and:[changedObject == self serverClass runningServers]) ifTrue:[
+ self runningServersChanged.
+ ^ self.
].
super update:something with:aParameter from:changedObject
! !
@@ -3575,9 +3590,9 @@
!
serverClass
- self useFcgiHolder value ifTrue:[
- ^ FCGIServer.
- ].
+ "answer the default class for instanciating servers.
+ Note that we may instanciate FCGIServer as well"
+
^ HTTPServer
! !
@@ -11833,5 +11848,5 @@
!AbstractSettingsApplication class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.208 2005-11-30 17:34:06 cg Exp $'
-! !
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.209 2005-12-21 15:34:57 stefan Exp $'
+! !