AbstractSettingsApplication.st
changeset 14566 29d10046a8f4
parent 14550 bfca4264cade
child 14568 6468fd5fce7a
--- a/AbstractSettingsApplication.st	Wed Jul 02 14:58:08 2014 +0200
+++ b/AbstractSettingsApplication.st	Wed Jul 02 15:14:49 2014 +0200
@@ -122,7 +122,8 @@
 
 AbstractSettingsApplication subclass:#HTTPStartServerSettingsApplication
 	instanceVariableNames:'portNumberChannel informationLabel hasNoCreatedServerChannel
-		hasCreatedServerChannel useFcgiHolder'
+		hasCreatedServerChannel useFcgiHolder
+		hasWebServerClassesNotLoadedHolder'
 	classVariableNames:'CreatedServers'
 	poolDictionaries:''
 	privateIn:AbstractSettingsApplication
@@ -4828,6 +4829,44 @@
     "Modified: / 08-07-2011 / 10:25:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'help specs'!
+
+flyByHelpSpec
+    "This resource specification was automatically generated
+     by the UIHelpTool of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIHelpTool may not be able to read the specification."
+
+    "
+     UIHelpTool openOnClass:AbstractSettingsApplication::HTTPStartServerSettingsApplication    
+    "
+
+    <resource: #help>
+
+    ^ super flyByHelpSpec addPairsFrom:#(
+
+#createFCGIServer
+'Create (but do not start) a new FCGI server.\FCGI allows for a Smalltalk server to run under a master server (such as Apache)'
+
+#createServer
+'Create (but do not start) a new web server on the specified port (usually 8080 or 80).'
+
+#createServerFromSettingsFile
+'Create (but do not start) a new server and all services as specified in a settings file'
+
+#loadWebServerPackage
+'Load the missing webserver class packages'
+
+#removeAllServers
+'Stop and remove all defined servers'
+
+#serverPortNumber
+'The port on which the created server should listen (usually 8080, 8081 or 80)'
+
+)
+! !
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'image specs'!
 
 defaultIcon
@@ -4874,152 +4913,169 @@
     <resource: #canvas>
 
     ^ 
-     #(FullSpec
-        name: windowSpec
-        window: 
-       (WindowSpec
-          label: 'HTTP Server Settings'
-          name: 'HTTP Server Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 539 630)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (VerticalPanelViewSpec
-                    name: 'VerticalPanel4'
-                    horizontalLayout: fit
-                    verticalLayout: topSpace
-                    horizontalSpace: 3
-                    verticalSpace: 3
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box19'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Label'
-                                name: 'Label2'
-                                layout: (LayoutFrame 5 0.0 0 0.0 -5 1 0 1.0)
-                                translateLabel: true
-                                labelChannel: informationLabel
-                                resizeForLabel: false
-                                adjust: left
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 539 200)
-                        )
-                       (ViewSpec
-                          name: 'Box18'
-                          extent: (Point 539 20)
-                        )
-                       (ViewSpec
-                          name: 'Box17'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Port:'
-                                name: 'Label1'
-                                layout: (LayoutFrame 3 0 21 0 40 0 43 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'EntryField1'
-                                layout: (LayoutFrame 40 0 20 0 111 0 42 0)
-                                enableChannel: hasHTTPServerClass
-                                model: portNumberChannel
-                                type: number
-                                immediateAccept: true
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: false
-                              )
-                             (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
-                                      tabable: true
-                                      model: createServer
-                                      enableChannel: hasHTTPServerClass
-                                      useDefaultExtent: true
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Create new FastCGI Server'
-                                      name: 'Button7'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: createFcgiServer
-                                      enableChannel: hasFCGIServerClass
-                                      useDefaultExtent: true
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Create Server from Settings File...'
-                                      name: 'Button6'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: createServerFromFile
-                                      enableChannel: hasHTTPServerClass
-                                      useDefaultExtent: true
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Remove all Servers'
-                                      name: 'Button5'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: removeAllServers
-                                      enableChannel: hasCreatedServerChannel
-                                      useDefaultExtent: true
-                                    )
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'HTTP Server Settings'
+         name: 'HTTP Server Settings'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 539 630)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (VerticalPanelViewSpec
+             name: 'VerticalPanel1'
+             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+             horizontalLayout: fit
+             verticalLayout: top
+             horizontalSpace: 3
+             verticalSpace: 3
+             component: 
+            (SpecCollection
+               collection: (
+                (VerticalPanelViewSpec
+                   name: 'VerticalPanel4'
+                   horizontalLayout: fit
+                   verticalLayout: topSpace
+                   horizontalSpace: 3
+                   verticalSpace: 3
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (ViewSpec
+                         name: 'InfoMessageBox'
+                         component: 
+                        (SpecCollection
+                           collection: (
+                            (LabelSpec
+                               label: 'Label'
+                               name: 'Label2'
+                               layout: (LayoutFrame 5 0.0 0 0.0 -5 1 0 1.0)
+                               translateLabel: true
+                               labelChannel: informationLabel
+                               resizeForLabel: false
+                               adjust: left
+                             )
+                            (ActionButtonSpec
+                               label: 'Load Missing WebServer Packages'
+                               name: 'Button8'
+                               layout: (AlignmentOrigin 0 0.5 0 1 0.5 1)
+                               activeHelpKey: loadWebServerPackage
+                               visibilityChannel: hasWebServerClassesNotLoadedHolder
+                               translateLabel: true
+                               tabable: true
+                               model: loadWebServerPackages
+                             )
+                            )
+                          
+                         )
+                         extent: (Point 539 200)
+                       )
+                      (ViewSpec
+                         name: 'Separator'
+                         extent: (Point 539 20)
+                       )
+                      (ViewSpec
+                         name: 'ActionButtonBox'
+                         component: 
+                        (SpecCollection
+                           collection: (
+                            (LabelSpec
+                               label: 'Port:'
+                               name: 'Label1'
+                               layout: (LayoutFrame 3 0 21 0 40 0 43 0)
+                               activeHelpKey: serverPortNumber
+                               translateLabel: true
+                               adjust: right
+                               activeHelpKey: serverPortNumber
+                             )
+                            (InputFieldSpec
+                               name: 'EntryField1'
+                               layout: (LayoutFrame 40 0 20 0 111 0 42 0)
+                               enableChannel: hasWebServerClassesLoadedHolder
+                               model: portNumberChannel
+                               type: number
+                               immediateAccept: true
+                               acceptOnReturn: true
+                               acceptOnTab: true
+                               acceptOnLostFocus: true
+                               acceptOnPointerLeave: false
+                               activeHelpKey: serverPortNumber
+                             )
+                            (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'
+                                     activeHelpKey: createServer   
+                                     translateLabel: true
+                                     tabable: true
+                                     model: createServer
+                                     enableChannel: hasWebServerClassesLoadedHolder
+                                     useDefaultExtent: true
                                    )
-                                 
-                                )
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 539 142)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 539 620)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
+                                  (ActionButtonSpec
+                                     label: 'Create new FastCGI Server'
+                                     name: 'Button7'
+                                     activeHelpKey: createFCGIServer
+                                     translateLabel: true
+                                     tabable: true
+                                     model: createFcgiServer
+                                     enableChannel: hasWebServerClassesLoadedHolder
+                                     useDefaultExtent: true
+                                   )
+                                  (ActionButtonSpec
+                                     label: 'Create Server from Settings File...'
+                                     name: 'Button6'
+                                     activeHelpKey: createServerFromSettingsFile
+                                     translateLabel: true
+                                     tabable: true
+                                     model: createServerFromFile
+                                     enableChannel: hasWebServerClassesLoadedHolder
+                                     useDefaultExtent: true
+                                   )
+                                  (ActionButtonSpec
+                                     label: 'Remove all Servers'
+                                     name: 'Button5'
+                                     activeHelpKey: removeAllServers
+                                     translateLabel: true
+                                     tabable: true
+                                     model: removeAllServers
+                                     enableChannel: hasCreatedServerChannel
+                                     useDefaultExtent: true
+                                   )
+                                  )
+                                
+                               )
+                             )
+                            )
+                          
+                         )
+                         extent: (Point 539 142)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 539 620)
+                 )
+                )
+              
+             )
+           )
+          )
+        
+       )
+     )
 ! !
 
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'servers access'!
@@ -5220,6 +5276,13 @@
     "Modified: / 25-01-2007 / 16:39:48 / cg"
 !
 
+loadWebServerPackages
+    Smalltalk loadPackage:'stx:goodies/webServer'.
+    Smalltalk loadPackage:'stx:goodies/webServer/htmlTree'.
+    Smalltalk loadPackage:'stx:goodies/webServer/comanche'.
+    Smalltalk loadPackage:'stx:goodies/webServer/ui'.
+!
+
 removeAllServerSubApplications
     settingsDialog removeAllSubApplicationsFor:self
 !
@@ -5269,6 +5332,19 @@
     ^ hasCreatedServerChannel.
 !
 
+hasWebServerClassesLoadedHolder
+    ^ BlockValue
+        forLogicalNot:(self hasWebServerClassesNotLoadedHolder)
+!
+
+hasWebServerClassesNotLoadedHolder
+    hasWebServerClassesNotLoadedHolder isNil ifTrue:[
+        hasWebServerClassesNotLoadedHolder := true asValue.
+        hasWebServerClassesNotLoadedHolder value:(self hasHTTPServerClass not or:[self hasFCGIServerClass not]).
+    ].
+    ^ hasWebServerClassesNotLoadedHolder.
+!
+
 informationLabel
     |info|
 
@@ -18436,10 +18512,10 @@
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.552 2014-06-24 17:42:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.553 2014-07-02 13:14:49 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.552 2014-06-24 17:42:25 cg Exp $'
-! !
-
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.553 2014-07-02 13:14:49 cg Exp $'
+! !
+