AbstractSettingsApplication.st
changeset 4310 933cd54deefe
parent 4292 68504047f229
child 4312 319d9902cc5e
--- a/AbstractSettingsApplication.st	Mon Nov 25 10:26:32 2002 +0100
+++ b/AbstractSettingsApplication.st	Mon Nov 25 17:25:13 2002 +0100
@@ -7,13 +7,6 @@
 	category:'Interface-Smalltalk'
 !
 
-AbstractSettingsApplication subclass:#CommunicationSettingsAppl
-	instanceVariableNames:'modifiedChannel'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:AbstractSettingsApplication
-!
-
 AbstractSettingsApplication subclass:#CompilerSettingsAppl
 	instanceVariableNames:'modifiedChannel stcCompilationSelection catchMethodRedefs
 		allowQualifiedNames warnDollar warnOldStyle stcCompilation
@@ -63,6 +56,15 @@
 	privateIn:AbstractSettingsApplication
 !
 
+AbstractSettingsApplication subclass:#HTTPServerSettingsAppl
+	instanceVariableNames:'modifiedChannel httpServerFileRoot httpServerLogFile swikiRoot
+		swikiRootEnabled httpServerRunning httpServerPort allowEmbedded
+		soapEnabled swikiEnabled hasHTTPServer httpServerHomeURL'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:AbstractSettingsApplication
+!
+
 AbstractSettingsApplication subclass:#KbdMappingSettingsAppl
 	instanceVariableNames:'modifiedChannel selectedRawKey macroTextHolder
 		selectedFunctionKey labelTextHolder functionKeyList rawKeyList
@@ -91,6 +93,15 @@
 	privateIn:AbstractSettingsApplication
 !
 
+AbstractSettingsApplication subclass:#MiscCommunicationSettingsAppl
+	instanceVariableNames:'modifiedChannel remoteBrowsingEnabled windowMigrationEnabled
+		windowMigrationPassword windowMigrationAuthenticate
+		enablePasswordCheck'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:AbstractSettingsApplication
+!
+
 AbstractSettingsApplication subclass:#MiscSettingsAppl
 	instanceVariableNames:'modifiedChannel returnFocus focusFollowsMouse beepEnabled
 		takeFocus preemptive activateOnClick shadows dynamicPrios
@@ -102,6 +113,16 @@
 	privateIn:AbstractSettingsApplication
 !
 
+AbstractSettingsApplication subclass:#OsiSettingsAppl
+	instanceVariableNames:'modifiedChannel osiACSEConnectionLogging osiROSEErrorLogging
+		osiCMISEErrorLogging osiACSEErrorLogging osiROSEPresent
+		osiCMISEPresent osiCMISEMessageLogging osiACSEDataLogging
+		osiROSEInvokationLogging osiACSEPresent osiROSEResponseLogging'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:AbstractSettingsApplication
+!
+
 AbstractSettingsApplication subclass:#PlainSettingsAppl
 	instanceVariableNames:'modifiedChannel'
 	classVariableNames:''
@@ -120,6 +141,14 @@
 	privateIn:AbstractSettingsApplication
 !
 
+AbstractSettingsApplication subclass:#RDoItServerSettingsAppl
+	instanceVariableNames:'modifiedChannel rDoitLogging rDoitsEnabled rDoitErrorLogging
+		hasRDoitServer rDoitErrorDebugging rDoitServerPort'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:AbstractSettingsApplication
+!
+
 AbstractSettingsApplication subclass:#SourceAndDebuggerSettingsAppl
 	instanceVariableNames:'modifiedChannel syntaxColoring showVerboseStack sourceCacheDir
 		useManager updChanges condenseSourceCache
@@ -191,152 +220,6 @@
     ^ masterApplication notNil and:[ masterApplication class == AbstractLauncherApplication::SettingsDialog].
 ! !
 
-!AbstractSettingsApplication::CommunicationSettingsAppl class methodsFor:'interface specs'!
-
-windowSpec
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:AbstractSettingsApplication::CommunicationSettingsAppl andSelector:#windowSpec
-     AbstractSettingsApplication::CommunicationSettingsAppl new openInterface:#windowSpec
-     AbstractSettingsApplication::CommunicationSettingsAppl open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'HTTP Settings'
-          #name: 'HTTP Settings'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 616 592)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #()
-        )
-      )
-! !
-
-!AbstractSettingsApplication::CommunicationSettingsAppl methodsFor:'actions'!
-
-doCancel
-
-    self isPartOfSettinsDialog ifTrue:[
-        self loadRequest.
-    ].
-    self closeRequest.
-!
-
-evaluateModified
-
-    self modifiedChannel value:(self hasUnsavedChanges).
-!
-
-help
-
-    self warn:'no help available here'.
-"/    self withWaitCursorDo:[HTMLDocumentView openFullOnHelpFile:'Launcher/keyboardSetting.html'].
-!
-
-loadRequest
-
-    self modifiedChannel value:false.
-!
-
-saveRequest
-    | result |
-
-    (self hasUnsavedChanges) ifTrue:[
-        result := self confirmWithCancel:(resources string:'Save changed Font Settings ?'). 
-        result isNil ifTrue:[ ^ false].
-        result ifTrue:[
-            self saveSettings.
-        ] ifFalse:[
-            self loadRequest.
-        ]
-    ].
-    ^ true
-!
-
-saveSettings
-
-    self hasUnsavedChanges ifTrue:[
-        self modifiedChannel value:false.
-    ].
-! !
-
-!AbstractSettingsApplication::CommunicationSettingsAppl methodsFor:'aspects'!
-
-modifiedChannel
-
-    modifiedChannel isNil ifTrue:[
-        modifiedChannel := false asValue.
-    ].
-    ^ modifiedChannel
-! !
-
-!AbstractSettingsApplication::CommunicationSettingsAppl methodsFor:'change & update'!
-
-update:something with:aParameter from:changedObject
-    "Invoked when an object that I depend upon sends a change notification."
-
-    "stub code automatically generated - please change as required"
-
-"/    changedObject == self allOfThem ifTrue:[
-"/        ^ self.
-"/    ].
-
-    super update:something with:aParameter from:changedObject
-! !
-
-!AbstractSettingsApplication::CommunicationSettingsAppl methodsFor:'initialization & release'!
-
-closeRequest
-
-    self saveRequest ifFalse:[
-        ^ self
-    ].
-
-    ^ super closeRequest.
-!
-
-initialize
-
-    resources := self class owningClass classResources.
-    super initialize
-!
-
-postOpen
-!
-
-postOpenAsSubcanvasWith:aBuilder
-
-    self postOpen.
-    ^ super postOpenAsSubcanvasWith:aBuilder
-!
-
-postOpenWith:aBuilder
-
-    self postOpen.
-    ^ super postOpenWith:aBuilder
-! !
-
-!AbstractSettingsApplication::CommunicationSettingsAppl methodsFor:'queries'!
-
-hasUnsavedChanges
-
-    ^ true
-! !
-
 !AbstractSettingsApplication::CompilerSettingsAppl class methodsFor:'defaults'!
 
 constantFoldingOptions
@@ -384,9 +267,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::CompilerSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::CompilerSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::CompilerSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::CompilerSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::CompilerSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::CompilerSettingsAppl open
     "
 
     <resource: #canvas>
@@ -400,7 +283,7 @@
           #name: 'Compiler Settings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 616 602)
+          #bounds: #(#Rectangle 16 42 616 556)
         )
         #component: 
        #(#SpecCollection
@@ -658,42 +541,6 @@
               #name: 'Separator5'
               #layout: #(#LayoutFrame 0 0.0 500 0 0 1.0 503 0)
             )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
            )
          
         )
@@ -1328,9 +1175,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::DisplaySettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::DisplaySettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::DisplaySettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::DisplaySettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::DisplaySettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::DisplaySettingsAppl open
     "
 
     <resource: #canvas>
@@ -1344,7 +1191,7 @@
           #name: 'Display Screen Settings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 616 592)
+          #bounds: #(#Rectangle 16 42 616 390)
         )
         #component: 
        #(#SpecCollection
@@ -1503,42 +1350,6 @@
               #name: 'Separator4'
               #layout: #(#LayoutFrame 0 0.0 333 0 0 1.0 337 0)
             )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
            )
          
         )
@@ -1945,9 +1756,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::EditSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::EditSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::EditSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::EditSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::EditSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::EditSettingsAppl open
     "
 
     <resource: #canvas>
@@ -1961,14 +1772,14 @@
           #name: 'Settings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 616 592)
+          #bounds: #(#Rectangle 16 42 616 362)
         )
         #component: 
        #(#SpecCollection
           #collection: #(
            #(#VerticalPanelViewSpec
               #name: 'VerticalPanel2'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -40 1.0)
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
               #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
@@ -2023,43 +1834,7 @@
                        )
                      
                     )
-                    #extent: #(#Point 600 200)
-                  )
-                 )
-               
-              )
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                    #extent: #(#Point 600 127)
                   )
                  )
                
@@ -2287,315 +2062,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::FontSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::FontSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::FontSettingsAppl open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Font Settings'
-          #name: 'Font Settings'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 490 353)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#ViewSpec
-              #name: 'AllBox'
-              #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 50 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#LabelSpec
-                    #label: 'All'
-                    #name: 'All'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
-                    #style: #(#FontDescription #helvetica #bold #roman 12)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Label'
-                    #name: 'AllFont'
-                    #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
-                    #translateLabel: true
-                    #labelChannel: #allFontLabelHolder
-                    #adjust: #left
-                    #postBuildCallback: #postBuildAllFontLabel:
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Change ...'
-                    #name: 'ChangeAll'
-                    #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
-                    #translateLabel: true
-                    #model: #changeAllFont
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator1'
-              #layout: #(#LayoutFrame 0 0.0 50 0 0 1.0 54 0)
-            )
-           #(#ViewSpec
-              #name: 'LabelsBox'
-              #layout: #(#LayoutFrame 0 0.0 55 0 0 1.0 105 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#LabelSpec
-                    #label: 'Labels'
-                    #name: 'Labels'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
-                    #style: #(#FontDescription #helvetica #bold #roman 12)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Labels'
-                    #name: 'LabelsFont'
-                    #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
-                    #translateLabel: true
-                    #labelChannel: #labelsFontLabelHolder
-                    #adjust: #left
-                    #postBuildCallback: #postBuildLabelsFontLabel:
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Change ...'
-                    #name: 'ChangeLabels'
-                    #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
-                    #translateLabel: true
-                    #model: #changeLabelsFont
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator2'
-              #layout: #(#LayoutFrame 0 0.0 105 0 0 1.0 109 0)
-            )
-           #(#ViewSpec
-              #name: 'ButtonsBox'
-              #layout: #(#LayoutFrame 0 0.0 110 0 0 1.0 160 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#LabelSpec
-                    #label: 'Buttons'
-                    #name: 'Buttons'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
-                    #style: #(#FontDescription #helvetica #bold #roman 12)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Buttons Font'
-                    #name: 'ButtonsFont'
-                    #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
-                    #translateLabel: true
-                    #labelChannel: #buttonsFontLabelHolder
-                    #adjust: #left
-                    #postBuildCallback: #postBuildButtonsFontLabel:
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Change ...'
-                    #name: 'Change Buttons'
-                    #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
-                    #translateLabel: true
-                    #model: #changeButtonsFont
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator3'
-              #layout: #(#LayoutFrame 0 0.0 160 0 0 1.0 164 0)
-            )
-           #(#ViewSpec
-              #name: 'ListsBox'
-              #layout: #(#LayoutFrame 0 0.0 165 0 0 1.0 215 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#LabelSpec
-                    #label: 'Lists'
-                    #name: 'Lists'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
-                    #style: #(#FontDescription #helvetica #bold #roman 12)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Lists Font'
-                    #name: 'ListsFont'
-                    #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
-                    #translateLabel: true
-                    #labelChannel: #listsFontLabelHolder
-                    #adjust: #left
-                    #postBuildCallback: #postBuildListsFontLabel:
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Change ...'
-                    #name: 'ChangeLists'
-                    #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
-                    #translateLabel: true
-                    #model: #changeListsFont
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator4'
-              #layout: #(#LayoutFrame 0 0.0 215 0 0 1.0 219 0)
-            )
-           #(#ViewSpec
-              #name: 'MenusBox'
-              #layout: #(#LayoutFrame 0 0.0 220 0 0 1.0 270 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#LabelSpec
-                    #label: 'Menus'
-                    #name: 'Menus'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
-                    #style: #(#FontDescription #helvetica #bold #roman 12)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Menus Font'
-                    #name: 'MenusFont'
-                    #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
-                    #translateLabel: true
-                    #labelChannel: #menusFontLabelHolder
-                    #adjust: #left
-                    #postBuildCallback: #postBuildMenuesFontLabel:
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Change ...'
-                    #name: 'ChangeMenus'
-                    #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
-                    #translateLabel: true
-                    #model: #changeMenusFont
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator5'
-              #layout: #(#LayoutFrame 0 0.0 270 0 0 1.0 274 0)
-            )
-           #(#ViewSpec
-              #name: 'TextBox'
-              #layout: #(#LayoutFrame 0 0.0 280 0 0 1.0 340 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#LabelSpec
-                    #label: 'Text'
-                    #name: 'Text'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
-                    #style: #(#FontDescription #helvetica #bold #roman 12)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Text Font'
-                    #name: 'TextFont'
-                    #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
-                    #translateLabel: true
-                    #labelChannel: #textFontLabelHolder
-                    #adjust: #left
-                    #postBuildCallback: #postBuildTextFontLabel:
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Change ...'
-                    #name: 'ChangeText'
-                    #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
-                    #translateLabel: true
-                    #model: #changeTextFont
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator6'
-              #layout: #(#LayoutFrame 0 0.0 340 0 0 1.0 344 0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 0
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 100 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 100 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Defaults'
-                    #name: 'Button1'
-                    #translateLabel: true
-                    #model: #loadRequest
-                    #extent: #(#Point 100 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 100 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-!
-
-windowSpec2
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:AbstractLauncherApplication::FontSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::FontSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::FontSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::FontSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::FontSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::FontSettingsAppl open
     "
 
     <resource: #canvas>
@@ -2609,327 +2078,248 @@
           #name: 'Font Settings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 491 533)
+          #bounds: #(#Rectangle 16 42 512 654)
         )
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
-           #(#SequenceViewSpec
-              #name: 'WidgetList'
-              #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 105 0)
-              #model: #selectedWidget
-              #style: #(#FontDescription #helvetica #bold #roman 12)
-              #hasHorizontalScrollBar: true
-              #hasVerticalScrollBar: true
-              #useIndex: false
-              #sequenceList: #widgetList
-            )
-           #(#ViewSpec
-              #name: 'Box1'
-              #layout: #(#LayoutFrame 0 0.0 105 0 0 1.0 -34 1)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#NonScrollableArbitraryComponentSpec
-                    #name: 'FontPanel'
-                    #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                    #component: #FontPanel
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-!
-
-windowSpecFirst
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:AbstractLauncherApplication::FontSettingsAppl andSelector:#windowSpecFirst
-     AbstractLauncherApplication::FontSettingsAppl new openInterface:#windowSpecFirst
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpecFirst
-        #window: 
-       #(#WindowSpec
-          #label: 'Font Settings'
-          #name: 'Font Settings'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 491 456)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fitSpace
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'AllBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'All'
+                          #name: 'All'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#LabelSpec
+                          #label: 'Label'
+                          #name: 'AllFont'
+                          #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
+                          #translateLabel: true
+                          #labelChannel: #allFontLabelHolder
+                          #adjust: #left
+                          #postBuildCallback: #postBuildAllFontLabel:
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Change ...'
+                          #name: 'ChangeAll'
+                          #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
+                          #translateLabel: true
+                          #model: #changeAllFont
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator1'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 490 50)
                   )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-!
-
-windowSpecx
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:AbstractLauncherApplication::FontSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::FontSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::FontSettingsAppl open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Font Settings'
-          #name: 'Font Settings'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 491 533)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
-           #(#SequenceViewSpec
-              #name: 'WidgetList'
-              #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 105 0)
-              #model: #selectedWidget
-              #style: #(#FontDescription #helvetica #bold #roman 12)
-              #hasHorizontalScrollBar: true
-              #hasVerticalScrollBar: true
-              #useIndex: false
-              #sequenceList: #widgetList
-            )
-           #(#ViewSpec
-              #name: 'Box1'
-              #layout: #(#LayoutFrame 0 0.0 105 0 0 1.0 -34 1)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#TextEditorSpec
-                    #name: 'ExampleText'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 145 0)
-                    #model: #exampleText
-                    #hasHorizontalScrollBar: true
-                    #hasVerticalScrollBar: true
-                  )
-                 #(#VariableHorizontalPanelSpec
-                    #name: 'VariableHorizontalPanel1'
-                    #layout: #(#LayoutFrame 0 0.0 145 0 0 1.0 -20 1)
+                 #(#ViewSpec
+                    #name: 'LabelsBox'
                     #component: 
                    #(#SpecCollection
                       #collection: #(
-                       #(#ViewSpec
-                          #name: 'FamilyBox'
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SequenceViewSpec
-                                #name: 'FamilyList'
-                                #layout: #(#LayoutFrame 0 0.0 20 0.0 0 1.0 0 1.0)
-                                #model: #selectedFamily
-                                #hasHorizontalScrollBar: true
-                                #hasVerticalScrollBar: true
-                                #useIndex: false
-                                #sequenceList: #familyList
-                              )
-                             #(#LabelSpec
-                                #label: 'Family'
-                                #name: 'FamilyLabel'
-                                #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                                #translateLabel: true
-                              )
-                             )
-                           
-                          )
-                        )
-                       #(#ViewSpec
-                          #name: 'TypeFaceBox'
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SequenceViewSpec
-                                #name: 'TypeFaceList'
-                                #layout: #(#LayoutFrame 0 0.0 20 0.0 0 1.0 0 1.0)
-                                #model: #selectedTypeFace
-                                #hasHorizontalScrollBar: true
-                                #hasVerticalScrollBar: true
-                                #useIndex: false
-                                #sequenceList: #typeFaceList
-                              )
-                             #(#LabelSpec
-                                #label: 'TypeFace'
-                                #name: 'TypeFaceLabel'
-                                #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                                #translateLabel: true
-                              )
-                             )
-                           
-                          )
-                        )
-                       #(#ViewSpec
-                          #name: 'SizeListBox'
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#LabelSpec
-                                #label: 'Size'
-                                #name: 'SizeLabel'
-                                #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                                #translateLabel: true
-                              )
-                             #(#SequenceViewSpec
-                                #name: 'SizeList'
-                                #layout: #(#LayoutFrame 0 0.0 20 0.0 0 1.0 0 1.0)
-                                #model: #selectedSize
-                                #hasHorizontalScrollBar: true
-                                #hasVerticalScrollBar: true
-                                #useIndex: false
-                                #sequenceList: #sizeList
-                              )
-                             )
-                           
-                          )
+                       #(#LabelSpec
+                          #label: 'Labels'
+                          #name: 'Labels'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#LabelSpec
+                          #label: 'Labels'
+                          #name: 'LabelsFont'
+                          #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
+                          #translateLabel: true
+                          #labelChannel: #labelsFontLabelHolder
+                          #adjust: #left
+                          #postBuildCallback: #postBuildLabelsFontLabel:
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Change ...'
+                          #name: 'ChangeLabels'
+                          #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
+                          #translateLabel: true
+                          #model: #changeLabelsFont
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator6'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 490 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'ButtonsBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Buttons'
+                          #name: 'Buttons'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#LabelSpec
+                          #label: 'Buttons Font'
+                          #name: 'ButtonsFont'
+                          #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
+                          #translateLabel: true
+                          #labelChannel: #buttonsFontLabelHolder
+                          #adjust: #left
+                          #postBuildCallback: #postBuildButtonsFontLabel:
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Change ...'
+                          #name: 'Change Buttons'
+                          #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
+                          #translateLabel: true
+                          #model: #changeButtonsFont
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator7'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
                         )
                        )
                      
                     )
-                    #handles: #(#Any 0.333333 0.666667 1.0)
+                    #extent: #(#Point 490 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'ListsBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Lists'
+                          #name: 'Lists'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#LabelSpec
+                          #label: 'Lists Font'
+                          #name: 'ListsFont'
+                          #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
+                          #translateLabel: true
+                          #labelChannel: #listsFontLabelHolder
+                          #adjust: #left
+                          #postBuildCallback: #postBuildListsFontLabel:
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Change ...'
+                          #name: 'ChangeLists'
+                          #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
+                          #translateLabel: true
+                          #model: #changeListsFont
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator8'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 490 50)
                   )
-                 #(#LabelSpec
-                    #label: 'CurrentFontLabel'
-                    #name: 'CurrentFontLabel'
-                    #layout: #(#LayoutFrame 0 0.0 -20 1 0 1.0 0 1)
-                    #level: -1
-                    #translateLabel: true
-                    #labelChannel: #currentFontLabelHolder
-                    #adjust: #left
+                 #(#ViewSpec
+                    #name: 'MenusBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Menus'
+                          #name: 'Menus'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#LabelSpec
+                          #label: 'Menus Font'
+                          #name: 'MenusFont'
+                          #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
+                          #translateLabel: true
+                          #labelChannel: #menusFontLabelHolder
+                          #adjust: #left
+                          #postBuildCallback: #postBuildMenuesFontLabel:
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Change ...'
+                          #name: 'ChangeMenus'
+                          #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
+                          #translateLabel: true
+                          #model: #changeMenusFont
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator9'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 490 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'TextBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Text'
+                          #name: 'Text'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 100 0 20 0)
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#LabelSpec
+                          #label: 'Text Font'
+                          #name: 'TextFont'
+                          #layout: #(#LayoutFrame 105 0 22 0 -5 1 44 0)
+                          #translateLabel: true
+                          #labelChannel: #textFontLabelHolder
+                          #adjust: #left
+                          #postBuildCallback: #postBuildTextFontLabel:
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Change ...'
+                          #name: 'ChangeText'
+                          #layout: #(#LayoutFrame 0 0.0 22 0 105 0 44 0)
+                          #translateLabel: true
+                          #model: #changeTextFont
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator10'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 490 50)
                   )
                  )
                
@@ -3385,6 +2775,593 @@
        self textDef value ~= TextView defaultFont ]]]]
 ! !
 
+!AbstractSettingsApplication::HTTPServerSettingsAppl class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:AbstractSettingsApplication::HTTPServerSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::HTTPServerSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::HTTPServerSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'HTTP Server Settings'
+          #name: 'HTTP Server Settings'
+          #min: #(#Point 10 10)
+          #max: #(#Point 1024 768)
+          #bounds: #(#Rectangle 16 42 616 592)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
+              #verticalLayout: #center
+              #horizontalSpace: 3
+              #verticalSpace: 3
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VerticalPanelViewSpec
+                    #name: 'VerticalPanel2'
+                    #horizontalLayout: #fit
+                    #verticalLayout: #center
+                    #horizontalSpace: 3
+                    #verticalSpace: 3
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'Box1'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Serving HTTP Requests'
+                                #name: 'CheckBox1'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #hasHTTPServer
+                                #model: #httpServerRunning
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box2'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'Port:'
+                                #name: 'Label1'
+                                #layout: #(#LayoutFrame 5 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField1'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #httpServerPort
+                                #type: #number
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box3'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'Log File:'
+                                #name: 'Label2'
+                                #layout: #(#LayoutFrame 5 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField2'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #httpServerLogFile
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box4'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'File Root:'
+                                #name: 'Label3'
+                                #layout: #(#LayoutFrame 5 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField3'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #httpServerFileRoot
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box5'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'Home URL:'
+                                #name: 'Label4'
+                                #layout: #(#LayoutFrame 5 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField4'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #httpServerHomeURL
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box6'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Swiki enabled'
+                                #name: 'CheckBox2'
+                                #layout: #(#LayoutFrame 25 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #swikiEnabled
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box7'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'SwikiRoot:'
+                                #name: 'Label5'
+                                #layout: #(#LayoutFrame 5 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField5'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #swikiRootEnabled
+                                #model: #swikiRoot
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box8'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Allow embedded ST applications'
+                                #name: 'CheckBox3'
+                                #layout: #(#LayoutFrame 25 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #allowEmbedded
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box9'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Soap enabled'
+                                #name: 'CheckBox4'
+                                #layout: #(#LayoutFrame 25 0 0 0 -5 1 22 0)
+                                #enableChannel: #httpServerRunning
+                                #model: #soapEnabled
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 230)
+                  )
+                 )
+               
+              )
+            )
+           #(#CheckBoxSpec
+              #label: 'Check Box'
+              #name: 'CheckBox5'
+              #layout: #(#LayoutFrame 151 0 456 0 287 0 478 0)
+              #model: #modifiedChannel
+              #translateLabel: true
+            )
+           )
+         
+        )
+      )
+! !
+
+!AbstractSettingsApplication::HTTPServerSettingsAppl methodsFor:'actions'!
+
+doCancel
+
+    self isPartOfSettinsDialog ifTrue:[
+        self loadRequest.
+    ].
+    self closeRequest.
+!
+
+evaluateModified
+
+    self modifiedChannel value:(self hasUnsavedChanges).
+!
+
+help
+
+    self withWaitCursorDo:[HTMLDocumentView openFullOnHelpFile:'Launcher/communicationsSettings.html'].
+!
+
+loadRequest
+
+    (self hasHTTPServer and:[HTTPServer isLoaded]) ifTrue:[
+        self httpServerRunning value:HTTPServer isRunning.
+        self httpServerFileRoot value:HTTPServer fileRoot.
+        self httpServerHomeURL value:HTTPServer homeURL.
+        self httpServerPort value:HTTPServer defaultPort.
+        self httpServerLogFile value:HTTPServer defaultLogFile.
+    ] ifFalse:[
+       self httpServerRunning value:false.
+    ].
+    (self hasSwiki and:[PWS::SwikiAction isLoaded and:[(self hasHTTPServer and:[HTTPServer isLoaded])]]) ifTrue:[
+        self swikiEnabled value:HTTPServer hasMySwikiConfigured.
+        self swikiRoot value:PWS::SwikiAction serverDirectory.
+    ] ifFalse:[
+       self swikiEnabled value:false.
+    ].
+    (self hasSoap and:[SOAP::SoapHttpModule isLoaded and:[(self hasHTTPServer and:[HTTPServer isLoaded])]]) ifTrue:[
+        self soapEnabled value:HTTPServer hasSoapEnabled.
+    ] ifFalse:[
+       self soapEnabled value:false.
+    ].
+    self allowEmbedded value:(HTTPServer isLoaded and:[HTTPServer enableEmbeddedSmalltalk]).
+    self swikiRootEnabled value:(self httpServerRunning value and:[self swikiEnabled value]).
+    self modifiedChannel value:false.
+!
+
+saveRequest
+    | result |
+
+    (self hasUnsavedChanges) ifTrue:[
+        result := self confirmWithCancel:(resources string:'Save changed Font Settings ?'). 
+        result isNil ifTrue:[ ^ false].
+        result ifTrue:[
+            self saveSettings.
+        ] ifFalse:[
+            self loadRequest.
+        ]
+    ].
+    ^ true
+!
+
+saveSettings
+
+    | httpServFileRoot httpServLogFile httpServHomeURL swikiRootLoc|
+
+    self hasUnsavedChanges ifTrue:[
+        (self hasHTTPServer and:[HTTPServer isLoaded]) ifTrue:[
+            HTTPServer defaultPort:self httpServerPort value.
+            httpServerFileRoot := self httpServerFileRoot value.
+            httpServFileRoot size == 0 ifTrue:[
+                httpServFileRoot := nil
+            ].
+            HTTPServer fileRoot:httpServFileRoot.
+
+            httpServLogFile := self httpServerLogFile value.
+            httpServLogFile size == 0 ifTrue:[
+                httpServLogFile := nil
+            ].
+            HTTPServer defaultLogFile:httpServLogFile.
+
+            httpServHomeURL := self httpServerHomeURL value.
+            httpServHomeURL size == 0 ifTrue:[
+                httpServHomeURL := nil
+            ].
+            HTTPServer homeURL:httpServHomeURL.
+
+            self httpServerRunning value ifTrue:[
+                HTTPServer startServer
+            ] ifFalse:[
+                HTTPServer stopServer
+            ]
+        ].
+
+        self hasSwiki ifTrue:[
+            swikiRootLoc := self swikiRoot value.
+            swikiRootLoc size == 0 ifTrue:[
+                swikiRootLoc := nil
+            ].
+            PWS::ServerAction serverDirectory:swikiRootLoc.
+
+            self swikiEnabled value ifTrue:[
+                HTTPServer setupMySwiki
+            ] ifFalse:[
+                HTTPServer disableMySwiki
+            ].
+            HTTPServer enableEmbeddedSmalltalk:self allowEmbedded value.
+        ].
+        self hasSoap ifTrue:[
+            self soapEnabled value ifTrue:[
+                HTTPServer setupSoap
+            ] ifFalse:[
+                HTTPServer disableSoap
+            ]
+        ].
+        self modifiedChannel value:false.
+    ].
+! !
+
+!AbstractSettingsApplication::HTTPServerSettingsAppl methodsFor:'aspects'!
+
+allowEmbedded
+
+    allowEmbedded isNil ifTrue:[
+        allowEmbedded := true asValue.
+        allowEmbedded onChangeSend:#evaluateModified to:self.
+    ].
+    ^ allowEmbedded.
+!
+
+httpServerFileRoot
+
+    httpServerFileRoot isNil ifTrue:[
+        httpServerFileRoot := ValueHolder new.
+        httpServerFileRoot onChangeSend:#evaluateModified to:self.
+    ].
+    ^ httpServerFileRoot.
+!
+
+httpServerHomeURL
+
+    httpServerHomeURL isNil ifTrue:[
+        httpServerHomeURL := ValueHolder new.
+        httpServerHomeURL onChangeSend:#evaluateModified to:self.
+    ].
+    ^ httpServerHomeURL.
+!
+
+httpServerLogFile
+
+    httpServerLogFile isNil ifTrue:[
+        httpServerLogFile := ValueHolder new.
+        httpServerLogFile onChangeSend:#evaluateModified to:self.
+    ].
+    ^ httpServerLogFile.
+!
+
+httpServerPort
+
+    httpServerPort isNil ifTrue:[
+        httpServerPort := ValueHolder new.
+        httpServerPort onChangeSend:#evaluateModified to:self.
+    ].
+    ^ httpServerPort.
+!
+
+httpServerRunning
+
+    httpServerRunning isNil ifTrue:[
+        httpServerRunning := true asValue.
+        httpServerRunning addDependent:self.
+        httpServerRunning onChangeSend:#evaluateModified to:self.
+    ].
+    ^ httpServerRunning.
+!
+
+modifiedChannel
+
+    modifiedChannel isNil ifTrue:[
+        modifiedChannel := false asValue.
+    ].
+    ^ modifiedChannel
+!
+
+soapEnabled
+
+    soapEnabled isNil ifTrue:[
+        soapEnabled := true asValue.
+        soapEnabled onChangeSend:#evaluateModified to:self.
+    ].
+    ^ soapEnabled.
+!
+
+swikiEnabled
+
+    swikiEnabled isNil ifTrue:[
+        swikiEnabled := true asValue.
+        swikiEnabled addDependent:self.
+        swikiEnabled onChangeSend:#evaluateModified to:self.
+    ].
+    ^ swikiEnabled.
+!
+
+swikiRoot
+
+    swikiRoot isNil ifTrue:[
+        swikiRoot := ValueHolder new.
+        swikiRoot onChangeSend:#evaluateModified to:self.
+    ].
+    ^ swikiRoot.
+!
+
+swikiRootEnabled
+
+    swikiRootEnabled isNil ifTrue:[
+        swikiRootEnabled := true asValue.
+        swikiRootEnabled onChangeSend:#evaluateModified to:self.
+    ].
+    ^ swikiRootEnabled.
+! !
+
+!AbstractSettingsApplication::HTTPServerSettingsAppl methodsFor:'change & update'!
+
+httpServerRunningChanged
+
+    self httpServerFileRoot value:(HTTPServer fileRoot).
+    self httpServerHomeURL value:(HTTPServer homeURL).
+    self httpServerPort value:(HTTPServer defaultPort).
+    self httpServerLogFile value:(HTTPServer defaultLogFile).
+!
+
+swikiEnabledChanged
+
+    self swikiRoot value:(PWS::SwikiAction serverDirectory).
+    self swikiRootEnabled value:self swikiEnabled value.
+!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    "stub code automatically generated - please change as required"
+
+    changedObject == self httpServerRunning ifTrue:[
+        self httpServerRunningChanged.
+        ^ self.
+    ].
+    changedObject == self swikiEnabled ifTrue:[
+        self swikiEnabledChanged.
+        ^ self.
+    ].
+
+    super update:something with:aParameter from:changedObject
+! !
+
+!AbstractSettingsApplication::HTTPServerSettingsAppl methodsFor:'initialization & release'!
+
+closeRequest
+
+    self saveRequest ifFalse:[
+        ^ self
+    ].
+
+    ^ super closeRequest.
+!
+
+initialize
+
+    resources := self class owningClass classResources.
+    self loadRequest.
+    super initialize
+! !
+
+!AbstractSettingsApplication::HTTPServerSettingsAppl methodsFor:'queries'!
+
+hasHTTPServer
+
+    ^ HTTPServer notNil
+!
+
+hasSoap
+
+    ^ SOAP::SoapHttpModule notNil
+!
+
+hasSwiki
+
+    ^ PWS::SwikiAction notNil
+!
+
+hasUnsavedChanges
+
+    ^ (
+            (((self hasHTTPServer and:[HTTPServer isLoaded]) and:[
+            HTTPServer defaultPort ~= self httpServerPort value or:[
+            HTTPServer fileRoot ~= (self httpServerFileRoot value isEmptyOrNil ifTrue:[nil] ifFalse:[self httpServerFileRoot value]) or:[
+            HTTPServer defaultLogFile ~= (self httpServerLogFile value isEmptyOrNil ifTrue:[nil] ifFalse:[self httpServerLogFile value]) or:[
+            HTTPServer homeURL ~= (self httpServerHomeURL value isEmptyOrNil ifTrue:[nil] ifFalse:[self httpServerHomeURL value]) or:[
+            HTTPServer isRunning ~= self httpServerRunning value]]]]]) or:[
+
+            self hasSwiki and:[
+            PWS::ServerAction serverDirectory ~= (self swikiRoot value isEmptyOrNil ifTrue:[nil] ifFalse:[self swikiRoot value]) or:[
+            HTTPServer enableEmbeddedSmalltalk ~= self allowEmbedded value or:[
+            HTTPServer hasMySwikiConfigured ~= self swikiEnabled value ]]]]) or:[
+            self hasSoap and:[HTTPServer hasSoapEnabled ~= self soapEnabled value]]
+    )
+! !
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -3395,9 +3372,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::KbdMappingSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::KbdMappingSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::KbdMappingSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::KbdMappingSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::KbdMappingSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::KbdMappingSettingsAppl open
     "
 
     <resource: #canvas>
@@ -3411,14 +3388,14 @@
           #name: 'Keyboard Mappings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 491 620)
+          #bounds: #(#Rectangle 16 42 491 650)
         )
         #component: 
        #(#SpecCollection
           #collection: #(
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 60 0 0 1.0 -34 1)
+              #layout: #(#LayoutFrame 0 0.0 60 0 0 1.0 0 1.0)
               #component: 
              #(#SpecCollection
                 #collection: #(
@@ -3477,35 +3454,6 @@
               )
               #handles: #(#Any 0.5 1.0)
             )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'Close'
-                    #name: 'Cancel'
-                    #visibilityChannel: #isNotPartOfSettinsDialog
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
            #(#LabelSpec
               #label: 'NoticeText'
               #name: 'Text'
@@ -3785,9 +3733,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::LanguageSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::LanguageSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::LanguageSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::LanguageSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::LanguageSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::LanguageSettingsAppl open
     "
 
     <resource: #canvas>
@@ -3817,7 +3765,7 @@
             )
            #(#SequenceViewSpec
               #name: 'List1'
-              #layout: #(#LayoutFrame 0 0.0 125 0 0 1.0 -34 1)
+              #layout: #(#LayoutFrame 0 0.0 125 0 0 1.0 0 1.0)
               #model: #languageHolder
               #hasHorizontalScrollBar: true
               #hasVerticalScrollBar: true
@@ -3825,42 +3773,6 @@
               #useIndex: false
               #sequenceList: #languageList
             )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1.0)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
            #(#LabelSpec
               #label: 'Notice:'
               #name: 'Notice'
@@ -4185,9 +4097,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::MemorySettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::MemorySettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::MemorySettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::MemorySettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::MemorySettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::MemorySettingsAppl open
     "
 
     <resource: #canvas>
@@ -4214,443 +4126,435 @@
               #labelChannel: #warningLabelHolder
               #adjust: #left
             )
-           #(#ViewSpec
-              #name: 'NewSpaceBox'
-              #layout: #(#LayoutFrame 0 0.0 50 0 0 1.0 100 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField1'
-                    #layout: #(#LayoutFrame 205 0 3 0 295 0 25 0)
-                    #model: #newSpaceSize
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Size of NewSpace:'
-                    #name: 'SizeOfNewSpaceLabel'
-                    #layout: #(#LayoutFrame 0 0 3 0 205 0 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Size of newSpace where objects are created'
-                    #name: 'Label3'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 295 0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Maximum Memory Limit:'
-                    #name: 'Label8'
-                    #layout: #(#LayoutFrame 305 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#InputFieldSpec
-                    #name: 'EntryField5'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #model: #maxOldSpace
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Never allocate more than this amount of memory'
-                    #name: 'Label9'
-                    #layout: #(#LayoutFrame 305 0 25 0 0 1 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator5'
-                    #layout: #(#LayoutFrame 300 0 0 0.0 303 0 0 1.0)
-                    #orientation: #vertical
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator1'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'QuickAllocationLimitBox'
-              #layout: #(#LayoutFrame 0 0.0 100 0 0 1.0 150 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField14'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #model: #fastMoreLimit
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Quick Allocation Limit:'
-                    #name: 'Label26'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Quickly allocate more memory (suppress GC) up to this limit'
-                    #name: 'Label27'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator15'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'GCTriggerBox'
-              #layout: #(#LayoutFrame 0 0.0 150 0 0 1.0 200 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField8'
-                    #layout: #(#LayoutFrame 205 0 3 0 295 0 25 0)
-                    #model: #igcLimit
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Incremental GC Allocation Trigger:'
-                    #name: 'Label14'
-                    #layout: #(#LayoutFrame 0 0 3 0 205 0 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Start IGC whenever this amount has been allocated'
-                    #name: 'Label15'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 295 0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#LabelSpec
-                    #label: 'Incremental GC Freespace Trigger:'
-                    #name: 'Label16'
-                    #layout: #(#LayoutFrame 305 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#InputFieldSpec
-                    #name: 'EntryField9'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #model: #igcFreeLimit
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Start IGC whenever freespace drops below this'
-                    #name: 'Label17'
-                    #layout: #(#LayoutFrame 305 0 25 0 0 1 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator8'
-                    #layout: #(#LayoutFrame 300 0 0 0.0 303 0 0 1.0)
-                    #orientation: #vertical
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator9'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'GCAmountBox'
-              #layout: #(#LayoutFrame 0 0.0 200 0 0 1.0 250 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField17'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #model: #igcFreeAmount
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Incremental GC Amount:'
-                    #name: 'Label32'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Try to keep this amount for peak requests'
-                    #name: 'Label33'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator18'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'OldspaceIncrementBox'
-              #layout: #(#LayoutFrame 0 0.0 250 0 0 1.0 300 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField18'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1.0 25 0)
-                    #model: #oldIncr
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Oldspace Increment:'
-                    #name: 'Label34'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Increase oldSpace in chunks of this size'
-                    #name: 'Label35'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator19'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'OldSpaceCompressLimitBox'
-              #layout: #(#LayoutFrame 0 0.0 300 0 0 1.0 350 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField19'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #model: #compressLimit
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Oldspace Compress Limit:'
-                    #name: 'Label36'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Use 2-pass compressing GC if > 0 and more memory is in use'
-                    #name: 'Label37'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator20'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'StackLimitBox'
-              #layout: #(#LayoutFrame 0 0.0 350 0.0 0 1.0 400 1.0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField20'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #enableChannel: #supportsJustInTimeCompilation
-                    #model: #stackLimit
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Stack Limit:'
-                    #name: 'Label38'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Trigger recursionInterrupt if more stack is used by a process'
-                    #name: 'Label39'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator21'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'CodeLimitBox'
-              #layout: #(#LayoutFrame 0 0.0 400 0 0 1.0 450 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField21'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #enableChannel: #supportsJustInTimeCompilation
-                    #model: #codeLimit
-                    #type: #numberOrNil
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Dynamic code Limit:'
-                    #name: 'Label40'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Flush dynamic compiled code to stay within this limit'
-                    #name: 'Label41'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator22'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#ViewSpec
-              #name: 'CodeTriggerBox'
-              #layout: #(#LayoutFrame 0 0.0 450 0 0 1.0 500 0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#InputFieldSpec
-                    #name: 'EntryField22'
-                    #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
-                    #model: #codeTrigger
-                    #type: #number
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                  )
-                 #(#LabelSpec
-                    #label: 'Dynamic code Limit:'
-                    #name: 'Label42'
-                    #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
-                    #translateLabel: true
-                    #adjust: #right
-                  )
-                 #(#LabelSpec
-                    #label: 'Start incremental GC whenever this amount of code has been allocated'
-                    #name: 'Label43'
-                    #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#DividerSpec
-                    #name: 'Separator23'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                  )
-                 )
-               
-              )
-            )
-           #(#DividerSpec
-              #name: 'Separator24'
-              #layout: #(#LayoutFrame 0 0.0 500 0 0 1.0 503 0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 50 0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'NewSpaceSizeBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField23'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #newSpaceSize
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Size of NewSpace:'
+                          #name: 'Label44'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Size of newSpace where objects are created'
+                          #name: 'Label45'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator24'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 49)
+                  )
+                 #(#ViewSpec
+                    #name: 'MaximumMemoryLimitBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField24'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #maxOldSpace
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Maximum Memory Limit:'
+                          #name: 'Label46'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Never allocate more than this amount of memory'
+                          #name: 'Label47'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator25'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 49)
+                  )
+                 #(#ViewSpec
+                    #name: 'QuickAllocationLimitBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField14'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #fastMoreLimit
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Quick Allocation Limit:'
+                          #name: 'Label26'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Quickly allocate more memory (suppress GC) up to this limit'
+                          #name: 'Label27'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator15'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'IncrementalGCAllocationTriggerBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField25'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #igcLimit
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Incremental GC Allocation Trigger:'
+                          #name: 'Label48'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Start IGC whenever this amount has been allocated'
+                          #name: 'Label49'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator26'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 49)
+                  )
+                 #(#ViewSpec
+                    #name: 'IncrementalGCFreespaceTriggerBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField26'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #igcFreeLimit
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Incremental GC Freespace Trigger:'
+                          #name: 'Label50'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Start IGC whenever freespace drops below this'
+                          #name: 'Label51'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator27'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 48)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'GCAmountBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField17'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #igcFreeAmount
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Incremental GC Amount:'
+                          #name: 'Label32'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Try to keep this amount for peak requests'
+                          #name: 'Label33'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator18'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'OldspaceIncrementBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField18'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1.0 25 0)
+                          #model: #oldIncr
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Oldspace Increment:'
+                          #name: 'Label34'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Increase oldSpace in chunks of this size'
+                          #name: 'Label35'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator19'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'OldSpaceCompressLimitBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField19'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #compressLimit
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Oldspace Compress Limit:'
+                          #name: 'Label36'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Use 2-pass compressing GC if > 0 and more memory is in use'
+                          #name: 'Label37'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator20'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 50)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'StackLimitBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField20'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #enableChannel: #supportsJustInTimeCompilation
+                          #model: #stackLimit
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Stack Limit:'
+                          #name: 'Label38'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Trigger recursionInterrupt if more stack is used by a process'
+                          #name: 'Label39'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator21'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 550)
+                  )
+                 #(#ViewSpec
+                    #name: 'CodeLimitBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField21'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #enableChannel: #supportsJustInTimeCompilation
+                          #model: #codeLimit
+                          #type: #numberOrNil
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Dynamic code Limit:'
+                          #name: 'Label40'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Flush dynamic compiled code to stay within this limit'
+                          #name: 'Label41'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator22'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 50)
+                  )
+                 #(#ViewSpec
+                    #name: 'CodeTriggerBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#InputFieldSpec
+                          #name: 'EntryField22'
+                          #layout: #(#LayoutFrame -95 1 3 0 -5 1 25 0)
+                          #model: #codeTrigger
+                          #type: #number
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#LabelSpec
+                          #label: 'Dynamic code Limit:'
+                          #name: 'Label42'
+                          #layout: #(#LayoutFrame 0 0 3 0 -95 1 25 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#LabelSpec
+                          #label: 'Start incremental GC whenever this amount of code has been allocated'
+                          #name: 'Label43'
+                          #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 47 0)
+                          #translateLabel: true
+                          #adjust: #left
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator23'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 50)
                   )
                  )
                
@@ -4854,20 +4758,6 @@
     ^ warningLabelHolder.
 ! !
 
-!AbstractSettingsApplication::MemorySettingsAppl methodsFor:'change & update'!
-
-update:something with:aParameter from:changedObject
-    "Invoked when an object that I depend upon sends a change notification."
-
-    "stub code automatically generated - please change as required"
-
-"/    changedObject == self allOfThem ifTrue:[
-"/        ^ self.
-"/    ].
-
-    super update:something with:aParameter from:changedObject
-! !
-
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'initialization & release'!
 
 closeRequest
@@ -4885,21 +4775,6 @@
     self warningLabelHolder value:'Warning - invalid settings may result in failures or poor performance
 ' , 'You have been warned' allBold , '.'.
     super initialize
-!
-
-postOpen
-!
-
-postOpenAsSubcanvasWith:aBuilder
-
-    self postOpen.
-    ^ super postOpenAsSubcanvasWith:aBuilder
-!
-
-postOpenWith:aBuilder
-
-    self postOpen.
-    ^ super postOpenWith:aBuilder
 ! !
 
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'queries'!
@@ -4921,6 +4796,383 @@
         )
 ! !
 
+!AbstractSettingsApplication::MiscCommunicationSettingsAppl class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:AbstractSettingsApplication::CommunicationSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::CommunicationSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::CommunicationSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'Communication Settings'
+          #name: 'Communication Settings'
+          #min: #(#Point 10 10)
+          #max: #(#Point 1024 768)
+          #bounds: #(#Rectangle 16 42 616 556)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel2'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
+              #verticalLayout: #center
+              #horizontalSpace: 3
+              #verticalSpace: 3
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VerticalPanelViewSpec
+                    #name: 'VerticalPanel1'
+                    #horizontalLayout: #fit
+                    #verticalLayout: #center
+                    #horizontalSpace: 3
+                    #verticalSpace: 3
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Remote browsing'
+                          #name: 'Label1'
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #extent: #(#Point 600 22)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box1'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Remote browsing enabled'
+                                #name: 'CheckBox1'
+                                #layout: #(#LayoutFrame 5 0 0 0 600 0 22 0)
+                                #enableChannel: #hasRemoteBrowsingSupport
+                                #model: #remoteBrowsingEnabled
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 23)
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator1'
+                          #extent: #(#Point 600 4)
+                        )
+                       #(#LabelSpec
+                          #label: 'Window migration'
+                          #name: 'Label2'
+                          #style: #(#FontDescription #helvetica #bold #roman 12)
+                          #translateLabel: true
+                          #extent: #(#Point 600 22)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box2'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Window migration enabled'
+                                #name: 'CheckBox2'
+                                #layout: #(#LayoutFrame 5 0 0 0 600 0 22 0)
+                                #enableChannel: #hasWindowMigrationServer
+                                #model: #windowMigrationEnabled
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 23)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box3'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Password check'
+                                #name: 'CheckBox3'
+                                #layout: #(#LayoutFrame 5 0 0 0 600 0 22 0)
+                                #enableChannel: #enablePasswordCheck
+                                #model: #windowMigrationAuthenticate
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 22)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box4'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'Password:'
+                                #name: 'Label3'
+                                #layout: #(#LayoutFrame 0 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField1'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #windowMigrationAuthenticate
+                                #model: #windowMigrationPassword
+                                #type: #password
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 22)
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator2'
+                          #extent: #(#Point 600 4)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 250)
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'actions'!
+
+doCancel
+
+    self isPartOfSettinsDialog ifTrue:[
+        self loadRequest.
+    ].
+    self closeRequest.
+!
+
+evaluateModified
+
+    self modifiedChannel value:(self hasUnsavedChanges).
+!
+
+help
+
+"/    self warn:'no help available here'.
+    self withWaitCursorDo:[HTMLDocumentView openFullOnHelpFile:'Launcher/communicationsSettings.html'].
+!
+
+loadRequest
+
+    self remoteBrowsingEnabled value:(self hasRemoteBrowsingSupport and:[SmalltalkShareServer isLoaded and:[SmalltalkShareServer serverRunning]]).
+    self windowMigrationEnabled value:(self hasWindowMigrationServer and:[WindowMigrationServer isLoaded and:[WindowMigrationServer serverRunning]]).
+    (self hasWindowMigrationServer and:[WindowMigrationServer isLoaded]) ifTrue:[
+        self windowMigrationPassword value:WindowMigrationServer password.
+        self windowMigrationAuthenticate value:self windowMigrationPassword value notNil.
+    ] ifFalse:[
+        self windowMigrationPassword value:nil.
+        self windowMigrationAuthenticate value:false.
+    ].
+    self modifiedChannel value:false.
+!
+
+saveRequest
+    | result |
+
+    (self hasUnsavedChanges) ifTrue:[
+        result := self confirmWithCancel:(resources string:'Save changed Communication Settings ?'). 
+        result isNil ifTrue:[ ^ false].
+        result ifTrue:[
+            self saveSettings.
+        ] ifFalse:[
+            self loadRequest.
+        ]
+    ].
+    ^ true
+!
+
+saveSettings
+
+    self hasUnsavedChanges ifTrue:[
+        self hasRemoteBrowsingSupport ifTrue:[
+            self remoteBrowsingEnabled value ifTrue:[
+                SmalltalkShareServer serverRunning ifTrue:[
+                    SmalltalkShareServer killAll
+                ].
+            ] ifFalse:[
+                SmalltalkShareServer serverRunning not ifTrue:[
+                    SmalltalkShareServer start.
+                    "/ must wait a bit; give it a chance to
+                    "/ really start (before checking)
+                    Delay waitForSeconds:0.5.
+                    SmalltalkShareServer serverRunning ifFalse:[
+                        self warn:'SmalltalkShareServer startup failed (see stderr).'
+                    ]
+                ].
+            ].
+        ].
+        self hasWindowMigrationServer ifTrue:[
+            self windowMigrationAuthenticate value ifTrue:[
+                WindowMigrationServer password:self windowMigrationPassword value.
+            ] ifFalse:[
+                WindowMigrationServer password:nil    
+            ].
+            self windowMigrationEnabled value ifTrue:[
+                WindowMigrationServer serverRunning ifTrue:[
+                    WindowMigrationServer stop
+                ].
+            ] ifFalse:[
+                WindowMigrationServer serverRunning not ifTrue:[
+                    WindowMigrationServer start.
+                    "/ must wait a bit; give it a chance to
+                    "/ really start (before checking)
+                    Delay waitForSeconds:0.5.
+                    WindowMigrationServer serverRunning ifFalse:[
+                        self warn:'WindowMigrationServer startup failed (see stderr).'
+                    ]
+                ].
+            ].
+        ].
+        self modifiedChannel value:false.
+    ].
+! !
+
+!AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'aspects'!
+
+enablePasswordCheck
+
+    enablePasswordCheck isNil ifTrue:[
+        self hasWindowMigrationServer not ifTrue:[
+            enablePasswordCheck := false asValue.
+        ] ifFalse:[
+            enablePasswordCheck := self windowMigrationEnabled.
+        ].
+    ].
+    ^ enablePasswordCheck.
+!
+
+modifiedChannel
+
+    modifiedChannel isNil ifTrue:[
+        modifiedChannel := false asValue.
+    ].
+    ^ modifiedChannel
+!
+
+remoteBrowsingEnabled
+
+    remoteBrowsingEnabled isNil ifTrue:[
+        remoteBrowsingEnabled := true asValue.
+        remoteBrowsingEnabled onChangeSend:#evaluateModified to:self.
+    ].
+    ^ remoteBrowsingEnabled.
+!
+
+windowMigrationAuthenticate
+
+    windowMigrationAuthenticate isNil ifTrue:[
+        windowMigrationAuthenticate := true asValue.
+        windowMigrationAuthenticate onChangeSend:#evaluateModified to:self.
+    ].
+    ^ windowMigrationAuthenticate.
+!
+
+windowMigrationEnabled
+
+    windowMigrationEnabled isNil ifTrue:[
+        windowMigrationEnabled := true asValue.
+        windowMigrationEnabled onChangeSend:#evaluateModified to:self.
+    ].
+    ^ windowMigrationEnabled.
+!
+
+windowMigrationPassword
+
+    windowMigrationPassword isNil ifTrue:[
+        windowMigrationPassword := ValueHolder new.
+        windowMigrationPassword onChangeSend:#evaluateModified to:self.
+    ].
+    ^ windowMigrationPassword.
+! !
+
+!AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'change & update'!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    "stub code automatically generated - please change as required"
+
+"/    changedObject == self allOfThem ifTrue:[
+"/        ^ self.
+"/    ].
+
+    super update:something with:aParameter from:changedObject
+! !
+
+!AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'initialization & release'!
+
+closeRequest
+
+    self saveRequest ifFalse:[
+        ^ self
+    ].
+
+    ^ super closeRequest.
+!
+
+initialize
+
+    resources := self class owningClass classResources.
+    self loadRequest.
+    super initialize
+! !
+
+!AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'queries'!
+
+hasRemoteBrowsingSupport
+
+    ^ SmalltalkShareServer notNil
+!
+
+hasUnsavedChanges
+
+    ^ (
+        self remoteBrowsingEnabled value ~= (self hasRemoteBrowsingSupport and:[SmalltalkShareServer isLoaded and:[SmalltalkShareServer serverRunning]]) or:[
+        self windowMigrationEnabled value ~= (self hasWindowMigrationServer and:[WindowMigrationServer isLoaded and:[WindowMigrationServer serverRunning]]) or:[
+        self windowMigrationPassword value ~= WindowMigrationServer password or:[
+        self windowMigrationAuthenticate value ~= self windowMigrationPassword value notNil ]]]
+    )
+!
+
+hasWindowMigrationServer
+
+    ^ WindowMigrationServer notNil
+! !
+
 !AbstractSettingsApplication::MiscSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -4931,9 +5183,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::MiscSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::MiscSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::MiscSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::MiscSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::MiscSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::MiscSettingsAppl open
     "
 
     <resource: #canvas>
@@ -4952,137 +5204,135 @@
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#CheckBoxSpec
-              #label: 'Shadows under PopUp Views'
-              #name: 'CheckBox1'
-              #layout: #(#LayoutFrame 5 0 5 0 -5 1 27 0)
-              #model: #shadows
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Beeper enabled'
-              #name: 'CheckBox2'
-              #layout: #(#LayoutFrame 5 0 30 0 -5 1 52 0)
-              #model: #beepEnabled
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Boxes Return Focus to Previously Active View'
-              #name: 'CheckBox3'
-              #layout: #(#LayoutFrame 5 0 55 0 -5 1 77 0)
-              #model: #returnFocus
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Views Catch Focus when Mapped'
-              #name: 'CheckBox4'
-              #layout: #(#LayoutFrame 5 0 80 0 -5 1 102 0)
-              #model: #takeFocus
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Hostname in Window Labels'
-              #name: 'CheckBox5'
-              #layout: #(#LayoutFrame 5 0 105 0 300 0 127 0)
-              #model: #hostNameInLabelHolder
-              #translateLabel: true
-            )
-           #(#ActionButtonSpec
-              #label: 'Format...'
-              #name: 'Button1'
-              #layout: #(#LayoutFrame 300 0 105 0 -5 1 127 0)
-              #translateLabel: true
-              #model: #formatHostNameinWindowLabels
-            )
-           #(#CheckBoxSpec
-              #label: 'Show Accelerator Keys in Menus'
-              #name: 'CheckBox6'
-              #layout: #(#LayoutFrame 5 0 130 0 -5 1 152 0)
-              #model: #showAccelerators
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Raise & Activate Windows on Click'
-              #name: 'CheckBox7'
-              #layout: #(#LayoutFrame 5 0 155 0 -5 1 177 0)
-              #model: #activateOnClick
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Focus Follows Mouse'
-              #name: 'CheckBox8'
-              #layout: #(#LayoutFrame 5 0 180 0 -5 1 202 0)
-              #model: #focusFollowsMouse
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Opaque Variable Panel Resizing'
-              #name: 'CheckBox9'
-              #layout: #(#LayoutFrame 5 0 205 0 -5 1 227 0)
-              #model: #opaqueVariablePanelResize
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Opaque Table Column Resizing'
-              #name: 'CheckBox10'
-              #layout: #(#LayoutFrame 5 0 230 0 -5 1 252 0)
-              #model: #opaqueTableColumnResize
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator1'
-              #layout: #(#LayoutFrame 0 0.0 259 0 0 1.0 263 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Preemptive Scheduling'
-              #name: 'CheckBox11'
-              #layout: #(#LayoutFrame 5 0 270 0 -5 1 292 0)
-              #model: #preemptive
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Dynamic Priorities'
-              #name: 'CheckBox12'
-              #layout: #(#LayoutFrame 20 0 295 0 -5 1 317 0)
-              #enableChannel: #preemptive
-              #model: #dynamicPrios
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator2'
-              #layout: #(#LayoutFrame 0 0.0 321 0 0 1.0 325 0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
+                 #(#CheckBoxSpec
+                    #label: 'Shadows under PopUp Views'
+                    #name: 'CheckBox1'
+                    #model: #shadows
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Beeper enabled'
+                    #name: 'CheckBox2'
+                    #model: #beepEnabled
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Boxes Return Focus to Previously Active View'
+                    #name: 'CheckBox3'
+                    #model: #returnFocus
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Views Catch Focus when Mapped'
+                    #name: 'CheckBox4'
+                    #model: #takeFocus
                     #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#CheckBoxSpec
+                          #label: 'Hostname in Window Labels'
+                          #name: 'CheckBox5'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1 22 0)
+                          #model: #hostNameInLabelHolder
+                          #translateLabel: true
+                        )
+                       #(#ActionButtonSpec
+                          #label: 'Format...'
+                          #name: 'Button1'
+                          #layout: #(#LayoutFrame -200 1 0 0 -5 1 22 0)
+                          #translateLabel: true
+                          #model: #formatHostNameinWindowLabels
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 23)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Show Accelerator Keys in Menus'
+                    #name: 'CheckBox6'
+                    #model: #showAccelerators
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
+                 #(#CheckBoxSpec
+                    #label: 'Raise & Activate Windows on Click'
+                    #name: 'CheckBox7'
+                    #model: #activateOnClick
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Focus Follows Mouse'
+                    #name: 'CheckBox8'
+                    #model: #focusFollowsMouse
                     #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Opaque Variable Panel Resizing'
+                    #name: 'CheckBox9'
+                    #model: #opaqueVariablePanelResize
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Opaque Table Column Resizing'
+                    #name: 'CheckBox10'
+                    #model: #opaqueTableColumnResize
+                    #translateLabel: true
+                    #extent: #(#Point 600 22)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
+                 #(#DividerSpec
+                    #name: 'Separator1'
+                    #extent: #(#Point 600 4)
+                  )
+                 #(#CheckBoxSpec
+                    #label: 'Preemptive Scheduling'
+                    #name: 'CheckBox11'
+                    #model: #preemptive
                     #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                    #extent: #(#Point 600 22)
+                  )
+                 #(#ViewSpec
+                    #name: 'Box2'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#CheckBoxSpec
+                          #label: 'Dynamic Priorities'
+                          #name: 'CheckBox12'
+                          #layout: #(#LayoutFrame 30 0.0 0 0 0 1.0 22 0)
+                          #enableChannel: #preemptive
+                          #model: #dynamicPrios
+                          #translateLabel: true
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 23)
+                  )
+                 #(#DividerSpec
+                    #name: 'Separator2'
+                    #extent: #(#Point 600 4)
                   )
                  )
                
@@ -5400,6 +5650,541 @@
     )
 ! !
 
+!AbstractSettingsApplication::OsiSettingsAppl class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:AbstractSettingsApplication::OsiSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::OsiSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::OsiSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'OSI Protocols Settings'
+          #name: 'OSI Protocols Settings'
+          #min: #(#Point 10 10)
+          #max: #(#Point 1024 768)
+          #bounds: #(#Rectangle 16 42 616 592)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
+              #verticalLayout: #center
+              #horizontalSpace: 3
+              #verticalSpace: 3
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VerticalPanelViewSpec
+                    #name: 'VerticalPanel2'
+                    #horizontalLayout: #fit
+                    #verticalLayout: #center
+                    #horizontalSpace: 3
+                    #verticalSpace: 3
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'Box1'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Log ACSE Errors'
+                                #name: 'CheckBox1'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiACSEPresent
+                                #model: #osiACSEErrorLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 27)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box2'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Connections'
+                                #name: 'CheckBox2'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiACSEPresent
+                                #model: #osiACSEConnectionLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 27)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box3'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Data Xfer'
+                                #name: 'CheckBox3'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiACSEPresent
+                                #model: #osiACSEDataLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 26)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box4'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Log ROSE Errors'
+                                #name: 'CheckBox4'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiROSEPresent
+                                #model: #osiROSEErrorLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box5'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Invoactions'
+                                #name: 'CheckBox5'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiROSEPresent
+                                #model: #osiROSEInvokationLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 24)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box6'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Responses'
+                                #name: 'CheckBox6'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiROSEPresent
+                                #model: #osiROSEResponseLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 23)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box7'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Log CMISE Errors'
+                                #name: 'CheckBox7'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiCMISEPresent
+                                #model: #osiCMISEErrorLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 22)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box8'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Messages'
+                                #name: 'CheckBox8'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #osiCMISEPresent
+                                #model: #osiCMISEMessageLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 21)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 250)
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!AbstractSettingsApplication::OsiSettingsAppl methodsFor:'actions'!
+
+doCancel
+
+    self isPartOfSettinsDialog ifTrue:[
+        self loadRequest.
+    ].
+    self closeRequest.
+!
+
+evaluateModified
+
+    self modifiedChannel value:(self hasUnsavedChanges).
+!
+
+help
+
+    self withWaitCursorDo:[HTMLDocumentView openFullOnHelpFile:'Launcher/communicationsSettings.html'].
+!
+
+loadRequest
+
+    self osiACSEPresent value:(OSI::ACSE notNil and:[OSI::ACSE isLoaded]).
+    self osiROSEPresent value:(OSI::ROSE notNil and:[OSI::ROSE isLoaded]).
+    self osiCMISEPresent value:(OSI::CMISE notNil and:[OSI::CMISE isLoaded]).
+
+    self osiACSEPresent value ifTrue:[
+        self osiACSEErrorLogging value:OSI::ACSE errorLogging.
+        self osiACSEConnectionLogging value:OSI::ACSE connectionLogging.
+        self osiACSEDataLogging value:OSI::ACSE dataLogging.
+    ].
+    self osiROSEPresent value ifTrue:[
+        self osiROSEErrorLogging value:OSI::ROSE errorLogging.
+        self osiROSEInvokationLogging value:OSI::ROSE invocationLogging.
+        self osiROSEResponseLogging value:OSI::ROSE responseLogging.
+    ].
+    self osiCMISEPresent value ifTrue:[
+        self osiCMISEErrorLogging value:OSI::CMISE errorLogging.
+        self osiCMISEMessageLogging value:OSI::CMISE messageLogging.
+    ].
+    self modifiedChannel value:false.
+!
+
+saveRequest
+    | result |
+
+    (self hasUnsavedChanges) ifTrue:[
+        result := self confirmWithCancel:(resources string:'Save changed OSI Protocol Settings ?'). 
+        result isNil ifTrue:[ ^ false].
+        result ifTrue:[
+            self saveSettings.
+        ] ifFalse:[
+            self loadRequest.
+        ]
+    ].
+    ^ true
+!
+
+saveSettings
+
+    self hasUnsavedChanges ifTrue:[
+        self osiACSEPresent value ifTrue:[
+            OSI::ACSE errorLogging:self osiACSEErrorLogging value.
+            OSI::ACSE connectionLogging:self osiACSEConnectionLogging value.
+            OSI::ACSE dataLogging:self osiACSEDataLogging value.
+        ].
+        self osiROSEPresent value ifTrue:[
+            OSI::ROSE errorLogging:self osiROSEErrorLogging value.
+            OSI::ROSE invocationLogging:self osiROSEInvokationLogging value.
+            OSI::ROSE responseLogging:self osiROSEResponseLogging value.
+        ].
+        self osiCMISEPresent value ifTrue:[
+            OSI::CMISE errorLogging:self osiCMISEErrorLogging value.
+            OSI::CMISE messageLogging:self osiCMISEMessageLogging value.
+        ].
+        self modifiedChannel value:false.
+    ].
+! !
+
+!AbstractSettingsApplication::OsiSettingsAppl methodsFor:'aspects'!
+
+modifiedChannel
+
+    modifiedChannel isNil ifTrue:[
+        modifiedChannel := false asValue.
+    ].
+    ^ modifiedChannel
+!
+
+osiACSEConnectionLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiACSEConnectionLogging isNil ifTrue:[
+        osiACSEConnectionLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiACSEConnectionLogging addDependent:self.
+"/       osiACSEConnectionLogging onChangeSend:#osiACSEConnectionLoggingChanged to:self.
+    ].
+    ^ osiACSEConnectionLogging.
+!
+
+osiACSEDataLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiACSEDataLogging isNil ifTrue:[
+        osiACSEDataLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiACSEDataLogging addDependent:self.
+"/       osiACSEDataLogging onChangeSend:#osiACSEDataLoggingChanged to:self.
+    ].
+    ^ osiACSEDataLogging.
+!
+
+osiACSEErrorLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiACSEErrorLogging isNil ifTrue:[
+        osiACSEErrorLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiACSEErrorLogging addDependent:self.
+"/       osiACSEErrorLogging onChangeSend:#osiACSEErrorLoggingChanged to:self.
+    ].
+    ^ osiACSEErrorLogging.
+!
+
+osiACSEPresent
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiACSEPresent isNil ifTrue:[
+        osiACSEPresent := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiACSEPresent addDependent:self.
+"/       osiACSEPresent onChangeSend:#osiACSEPresentChanged to:self.
+    ].
+    ^ osiACSEPresent.
+!
+
+osiCMISEErrorLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiCMISEErrorLogging isNil ifTrue:[
+        osiCMISEErrorLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiCMISEErrorLogging addDependent:self.
+"/       osiCMISEErrorLogging onChangeSend:#osiCMISEErrorLoggingChanged to:self.
+    ].
+    ^ osiCMISEErrorLogging.
+!
+
+osiCMISEMessageLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiCMISEMessageLogging isNil ifTrue:[
+        osiCMISEMessageLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiCMISEMessageLogging addDependent:self.
+"/       osiCMISEMessageLogging onChangeSend:#osiCMISEMessageLoggingChanged to:self.
+    ].
+    ^ osiCMISEMessageLogging.
+!
+
+osiCMISEPresent
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiCMISEPresent isNil ifTrue:[
+        osiCMISEPresent := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiCMISEPresent addDependent:self.
+"/       osiCMISEPresent onChangeSend:#osiCMISEPresentChanged to:self.
+    ].
+    ^ osiCMISEPresent.
+!
+
+osiROSEErrorLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiROSEErrorLogging isNil ifTrue:[
+        osiROSEErrorLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiROSEErrorLogging addDependent:self.
+"/       osiROSEErrorLogging onChangeSend:#osiROSEErrorLoggingChanged to:self.
+    ].
+    ^ osiROSEErrorLogging.
+!
+
+osiROSEInvokationLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiROSEInvokationLogging isNil ifTrue:[
+        osiROSEInvokationLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiROSEInvokationLogging addDependent:self.
+"/       osiROSEInvokationLogging onChangeSend:#osiROSEInvokationLoggingChanged to:self.
+    ].
+    ^ osiROSEInvokationLogging.
+!
+
+osiROSEPresent
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiROSEPresent isNil ifTrue:[
+        osiROSEPresent := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiROSEPresent addDependent:self.
+"/       osiROSEPresent onChangeSend:#osiROSEPresentChanged to:self.
+    ].
+    ^ osiROSEPresent.
+!
+
+osiROSEResponseLogging
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    osiROSEResponseLogging isNil ifTrue:[
+        osiROSEResponseLogging := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       osiROSEResponseLogging addDependent:self.
+"/       osiROSEResponseLogging onChangeSend:#osiROSEResponseLoggingChanged to:self.
+    ].
+    ^ osiROSEResponseLogging.
+! !
+
+!AbstractSettingsApplication::OsiSettingsAppl methodsFor:'change & update'!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    "stub code automatically generated - please change as required"
+
+"/    changedObject == self allOfThem ifTrue:[
+"/        ^ self.
+"/    ].
+
+    super update:something with:aParameter from:changedObject
+! !
+
+!AbstractSettingsApplication::OsiSettingsAppl methodsFor:'initialization & release'!
+
+closeRequest
+
+    self saveRequest ifFalse:[
+        ^ self
+    ].
+
+    ^ super closeRequest.
+!
+
+initialize
+
+    resources := self class owningClass classResources.
+    self loadRequest.
+    super initialize
+! !
+
+!AbstractSettingsApplication::OsiSettingsAppl methodsFor:'queries'!
+
+hasUnsavedChanges
+
+    ^ ((
+        (self osiACSEPresent value and:[
+        self osiACSEErrorLogging value ~= OSI::ACSE errorLogging or:[
+        self osiACSEConnectionLogging value ~= OSI::ACSE connectionLogging or:[
+        self osiACSEDataLogging value ~= OSI::ACSE dataLogging]]]) or:[
+        self osiROSEPresent value and:[
+            self osiROSEErrorLogging value ~= OSI::ROSE errorLogging or:[
+            self osiROSEInvokationLogging value ~= OSI::ROSE invocationLogging or:[
+            self osiROSEResponseLogging value ~= OSI::ROSE responseLogging]]]]) or:[
+        (self osiCMISEPresent value) and:[
+        self osiCMISEErrorLogging value ~= OSI::CMISE errorLogging or:[
+        self osiCMISEMessageLogging value ~= OSI::CMISE messageLogging]]])
+! !
+
 !AbstractSettingsApplication::PlainSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -5410,9 +6195,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::PlainSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::PlainSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::PlainSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::PlainSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::PlainSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::PlainSettingsAppl open
     "
 
     <resource: #canvas>
@@ -5430,45 +6215,7 @@
         )
         #component: 
        #(#SpecCollection
-          #collection: #(
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
+          #collection: #()
         )
       )
 ! !
@@ -5503,7 +6250,7 @@
     | result |
 
     (self hasUnsavedChanges) ifTrue:[
-        result := self confirmWithCancel:(resources string:'Save changed Font Settings ?'). 
+        result := self confirmWithCancel:(resources string:'Save changed Settings ?'). 
         result isNil ifTrue:[ ^ false].
         result ifTrue:[
             self saveSettings.
@@ -5594,9 +6341,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::PrinterSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::PrinterSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::PrinterSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::PrinterSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::PrinterSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::PrinterSettingsAppl open
     "
 
     <resource: #canvas>
@@ -5610,201 +6357,273 @@
           #name: 'Printer Settings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 12 22 612 572)
+          #bounds: #(#Rectangle 16 42 616 382)
         )
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#LabelSpec
-              #label: 'Printer Type:'
-              #name: 'PrinterTypeLabel'
-              #layout: #(#LayoutFrame 0 0 5 0 150 0 27 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#ComboListSpec
-              #name: 'PrinterTypeComboList'
-              #layout: #(#LayoutFrame 150 0 5 0 -5 1 27 0)
-              #model: #printerTypeSelection
-              #comboList: #printerType
-              #useIndex: true
-            )
-           #(#LabelSpec
-              #label: 'Printer Command:'
-              #name: 'PrinterCommandLabel'
-              #layout: #(#LayoutFrame 0 0 40 0 150 0 62 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#ComboBoxSpec
-              #name: 'CommandComboBox'
-              #layout: #(#LayoutFrame 150 0 40 0 -5 1 62 0)
-              #model: #printCommand
-              #acceptOnPointerLeave: false
-              #comboList: #printCommandList
-              #useIndex: false
-            )
-           #(#DividerSpec
-              #name: 'Separator1'
-              #layout: #(#LayoutFrame 0 0.0 72 0 0 1.0 76 0)
-            )
-           #(#LabelSpec
-              #label: 'Page Format:'
-              #name: 'PageFormatLabel'
-              #layout: #(#LayoutFrame 5 0 85 0 150 0 107 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#PopUpListSpec
-              #label: 'PopUp List'
-              #name: 'PageFormatPopUpList'
-              #layout: #(#LayoutFrame 150 0 85 0 288 0 107 0)
-              #tabable: true
-              #model: #pageFormat
-              #enableChannel: #enableFormat
-              #menu: #pageFormatList
-              #useIndex: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Landscape'
-              #name: 'LandscapeCheckBox'
-              #layout: #(#LayoutFrame 330 0 85 0 -5 1 107 0)
-              #enableChannel: #enablelandscape
-              #model: #landscape
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator2'
-              #layout: #(#LayoutFrame 0 0.0 114 0 0 1.0 118 0)
-            )
-           #(#LabelSpec
-              #label: 'Top Margin:'
-              #name: 'TopMarginLabel'
-              #layout: #(#LayoutFrame 5 0 130 0 150 0 152 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#InputFieldSpec
-              #name: 'TopMarginEntryField'
-              #layout: #(#LayoutFrame 150 0 130 0 250 0 152 0)
-              #enableChannel: #enableMargins
-              #model: #topMargin
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #converter: #PrintConverter
-              #acceptOnPointerLeave: false
-            )
-           #(#LabelSpec
-              #label: 'Left Margin:'
-              #name: 'LeftMarginLabel'
-              #layout: #(#LayoutFrame 5 0 160 0 150 0 182 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#InputFieldSpec
-              #name: 'LeftMarginEntryField'
-              #layout: #(#LayoutFrame 150 0 160 0 250 0 182 0)
-              #enableChannel: #enableMargins
-              #model: #leftMargin
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #converter: #PrintConverter
-              #acceptOnPointerLeave: false
-            )
-           #(#LabelSpec
-              #label: 'Right Margin:'
-              #name: 'RightMarginLabel'
-              #layout: #(#LayoutFrame 5 0 190 0 150 0 212 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#InputFieldSpec
-              #name: 'RightMarginEntryField'
-              #layout: #(#LayoutFrame 150 0 190 0 250 0 212 0)
-              #enableChannel: #enableMargins
-              #model: #rightMargin
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #converter: #PrintConverter
-              #acceptOnPointerLeave: false
-            )
-           #(#LabelSpec
-              #label: 'Bottom Margin:'
-              #name: 'BottomMarginLabel'
-              #layout: #(#LayoutFrame 5 0 220 0 150 0 242 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#InputFieldSpec
-              #name: 'BottomMarginEntryField'
-              #layout: #(#LayoutFrame 150 0 220 0 250 0 242 0)
-              #enableChannel: #enableMargins
-              #model: #bottomMargin
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #converter: #PrintConverter
-              #acceptOnPointerLeave: false
-            )
-           #(#PopUpListSpec
-              #label: 'PopUp List'
-              #name: 'PopUpList2'
-              #layout: #(#LayoutFrame 457 0 129 0 -5 1 151 0)
-              #tabable: true
-              #model: #selectedUnit
-              #menu: #unitList
-              #useIndex: true
-            )
-           #(#DividerSpec
-              #name: 'Separator3'
-              #layout: #(#LayoutFrame 0 0.0 256 0 0 1.0 260 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Color Printer'
-              #name: 'ColorPrinterCheckBox'
-              #layout: #(#LayoutFrame 5 0 269 0 -5 1 291 0)
-              #enableChannel: #enableColorBox
-              #model: #supportsColor
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator4'
-              #layout: #(#LayoutFrame 0 0.0 296 0 0 1.0 300 0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'PrinterSelectBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Printer Type:'
+                          #name: 'PrinterTypeLabel'
+                          #layout: #(#LayoutFrame 0 0 5 0 150 0 27 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#ComboListSpec
+                          #name: 'PrinterTypeComboList'
+                          #layout: #(#LayoutFrame 150 0 5 0 -5 1 27 0)
+                          #model: #printerTypeSelection
+                          #comboList: #printerType
+                          #useIndex: true
+                        )
+                       #(#LabelSpec
+                          #label: 'Printer Command:'
+                          #name: 'PrinterCommandLabel'
+                          #layout: #(#LayoutFrame 0 0 45 0 150 0 67 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#ComboBoxSpec
+                          #name: 'CommandComboBox'
+                          #layout: #(#LayoutFrame 150 0 45 0 -5 1 67 0)
+                          #model: #printCommand
+                          #acceptOnPointerLeave: false
+                          #comboList: #printCommandList
+                          #useIndex: false
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator1'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 84)
+                  )
+                 #(#ViewSpec
+                    #name: 'FormatBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#LabelSpec
+                          #label: 'Page Format:'
+                          #name: 'PageFormatLabel'
+                          #layout: #(#LayoutFrame 0 0 0 0 150 0 22 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#PopUpListSpec
+                          #label: 'PopUp List'
+                          #name: 'PageFormatPopUpList'
+                          #layout: #(#LayoutFrame 150 0 0 0 300 0 22 0)
+                          #tabable: true
+                          #model: #pageFormat
+                          #enableChannel: #enableFormat
+                          #menu: #pageFormatList
+                          #useIndex: true
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Landscape'
+                          #name: 'LandscapeCheckBox'
+                          #layout: #(#LayoutFrame 380 0 0 0 -5 1 22 0)
+                          #enableChannel: #enablelandscape
+                          #model: #landscape
+                          #translateLabel: true
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator5'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 30)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'MarginBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VerticalPanelViewSpec
+                          #name: 'VerticalPanel2'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #horizontalLayout: #fit
+                          #verticalLayout: #center
+                          #horizontalSpace: 3
+                          #verticalSpace: 3
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#ViewSpec
+                                #name: 'Box1'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#LabelSpec
+                                      #label: 'Top Margin:'
+                                      #name: 'TopMarginLabel'
+                                      #layout: #(#LayoutFrame 0 0 0 0 150 0 21 0)
+                                      #translateLabel: true
+                                      #adjust: #right
+                                    )
+                                   #(#InputFieldSpec
+                                      #name: 'TopMarginEntryField'
+                                      #layout: #(#LayoutFrame 150 0 0 0 250 0 21 0)
+                                      #enableChannel: #enableMargins
+                                      #model: #topMargin
+                                      #acceptOnReturn: true
+                                      #acceptOnTab: true
+                                      #acceptOnLostFocus: true
+                                      #converter: #PrintConverter
+                                      #acceptOnPointerLeave: false
+                                    )
+                                   #(#PopUpListSpec
+                                      #label: 'PopUp List'
+                                      #name: 'PopUpList2'
+                                      #layout: #(#LayoutFrame -155 1 0 0 -5 1 21 0)
+                                      #tabable: true
+                                      #model: #selectedUnit
+                                      #menu: #unitList
+                                      #useIndex: true
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 600 24)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box2'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#LabelSpec
+                                      #label: 'Left Margin:'
+                                      #name: 'LeftMarginLabel'
+                                      #layout: #(#LayoutFrame 0 0 0 0 150 0 21 0)
+                                      #translateLabel: true
+                                      #adjust: #right
+                                    )
+                                   #(#InputFieldSpec
+                                      #name: 'LeftMarginEntryField'
+                                      #layout: #(#LayoutFrame 150 0 0 0 250 0 21 0)
+                                      #enableChannel: #enableMargins
+                                      #model: #leftMargin
+                                      #acceptOnReturn: true
+                                      #acceptOnTab: true
+                                      #acceptOnLostFocus: true
+                                      #converter: #PrintConverter
+                                      #acceptOnPointerLeave: false
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 600 24)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box3'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#LabelSpec
+                                      #label: 'Right Margin:'
+                                      #name: 'RightMarginLabel'
+                                      #layout: #(#LayoutFrame 0 0 0 0 150 0 21 0)
+                                      #translateLabel: true
+                                      #adjust: #right
+                                    )
+                                   #(#InputFieldSpec
+                                      #name: 'RightMarginEntryField'
+                                      #layout: #(#LayoutFrame 150 0 0 0 250 0 21 0)
+                                      #enableChannel: #enableMargins
+                                      #model: #rightMargin
+                                      #acceptOnReturn: true
+                                      #acceptOnTab: true
+                                      #acceptOnLostFocus: true
+                                      #converter: #PrintConverter
+                                      #acceptOnPointerLeave: false
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 600 24)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box4'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#LabelSpec
+                                      #label: 'Bottom Margin:'
+                                      #name: 'BottomMarginLabel'
+                                      #layout: #(#LayoutFrame 0 0 0 0 150 0 21 0)
+                                      #translateLabel: true
+                                      #adjust: #right
+                                    )
+                                   #(#InputFieldSpec
+                                      #name: 'BottomMarginEntryField'
+                                      #layout: #(#LayoutFrame 150 0 0 0 250 0 21 0)
+                                      #enableChannel: #enableMargins
+                                      #model: #bottomMargin
+                                      #acceptOnReturn: true
+                                      #acceptOnTab: true
+                                      #acceptOnLostFocus: true
+                                      #converter: #PrintConverter
+                                      #acceptOnPointerLeave: false
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 600 24)
+                              )
+                             )
+                           
+                          )
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator6'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 100)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'Box5'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#CheckBoxSpec
+                          #label: 'Color Printer'
+                          #name: 'ColorPrinterCheckBox'
+                          #layout: #(#LayoutFrame 0 0 0 0 599 0 21 0)
+                          #enableChannel: #enableColorBox
+                          #model: #supportsColor
+                          #translateLabel: true
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator7'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 27)
                   )
                  )
                
@@ -6231,6 +7050,387 @@
     )
 ! !
 
+!AbstractSettingsApplication::RDoItServerSettingsAppl class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:AbstractSettingsApplication::RDoItServerSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::RDoItServerSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::RDoItServerSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'RDoIt Server Settings'
+          #name: 'RDoIt Server Settings'
+          #min: #(#Point 10 10)
+          #max: #(#Point 1024 768)
+          #bounds: #(#Rectangle 12 22 612 572)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
+              #verticalLayout: #center
+              #horizontalSpace: 3
+              #verticalSpace: 3
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VerticalPanelViewSpec
+                    #name: 'VerticalPanel2'
+                    #horizontalLayout: #fit
+                    #verticalLayout: #center
+                    #horizontalSpace: 3
+                    #verticalSpace: 3
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'Box1'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Remote doits enabled'
+                                #name: 'CheckBox1'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #hasRDoitServer
+                                #model: #rDoitsEnabled
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box2'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'Port:'
+                                #name: 'Label2'
+                                #layout: #(#LayoutFrame 5 0 0 0 150 0 22 0)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'EntryField1'
+                                #layout: #(#LayoutFrame 150 0 0 0 -5 1 22 0)
+                                #enableChannel: #rDoitsEnabled
+                                #model: #rDoitServerPort
+                                #type: #number
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box3'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Log errors'
+                                #name: 'CheckBox2'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #rDoitsEnabled
+                                #model: #rDoitErrorLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box4'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Log requests'
+                                #name: 'CheckBox3'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #rDoitsEnabled
+                                #model: #rDoitLogging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 24)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box5'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#CheckBoxSpec
+                                #label: 'Debug errors'
+                                #name: 'CheckBox4'
+                                #layout: #(#LayoutFrame 5 0 0 0 -5 1 22 0)
+                                #enableChannel: #rDoitsEnabled
+                                #model: #rDoitErrorDebugging
+                                #translateLabel: true
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 600 23)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 600 300)
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'actions'!
+
+doCancel
+
+    self isPartOfSettinsDialog ifTrue:[
+        self loadRequest.
+    ].
+    self closeRequest.
+!
+
+evaluateModified
+
+    self modifiedChannel value:(self hasUnsavedChanges).
+!
+
+help
+
+"/    self warn:'no help available here'.
+    self withWaitCursorDo:[HTMLDocumentView openFullOnHelpFile:'Launcher/communicationsSettings.html'].
+!
+
+loadRequest
+
+    (self hasRDoitServer and:[RDoItServer isLoaded]) ifTrue:[
+        self rDoitsEnabled value:RDoItServer serverRunning.
+        self rDoitLogging value:RDoItServer isLogging.
+        self rDoitErrorLogging value:RDoItServer isErrorLogging.
+        self rDoitErrorDebugging value:RDoItServer isErrorCatching not.
+        self rDoitServerPort value:RDoItServer defaultPortNumber.
+    ] ifFalse:[
+        self rDoitsEnabled value:false.
+        self rDoitLogging value:false.
+        self rDoitErrorLogging value:false.
+        self rDoitErrorDebugging value:false.
+        self rDoitServerPort value:nil.
+    ].
+    self modifiedChannel value:false.
+!
+
+saveRequest
+    | result |
+
+    (self hasUnsavedChanges) ifTrue:[
+        result := self confirmWithCancel:(resources string:'Save changed RDoIt Server Settings ?'). 
+        result isNil ifTrue:[ ^ false].
+        result ifTrue:[
+            self saveSettings.
+        ] ifFalse:[
+            self loadRequest.
+        ]
+    ].
+    ^ true
+!
+
+saveSettings
+
+    |rDoits|
+
+    self hasUnsavedChanges ifTrue:[
+        RDoItServer defaultPortNumber:self rDoitServerPort value.
+        RDoItServer logging:self rDoitLogging value.
+        RDoItServer errorLogging:self rDoitErrorLogging value.
+        RDoItServer errorCatching:(self rDoitErrorDebugging value not).
+        rDoits := self rDoitsEnabled value.
+        rDoits ~~ RDoItServer serverRunning ifTrue:[
+            rDoits ifFalse:[
+                RDoItServer stop
+            ] ifTrue:[
+                RDoItServer start.
+                "/ must wait a bit; give it a chance to
+                "/ really start (before checking)
+                Delay waitForSeconds:0.5.
+                RDoItServer serverRunning ifFalse:[
+                    self warn:'RDoit startup failed (see stderr).'
+                ]
+            ]
+        ].
+        self modifiedChannel value:false.
+    ].
+! !
+
+!AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'aspects'!
+
+modifiedChannel
+
+    modifiedChannel isNil ifTrue:[
+        modifiedChannel := false asValue.
+    ].
+    ^ modifiedChannel
+!
+
+rDoitErrorDebugging
+
+    rDoitErrorDebugging isNil ifTrue:[
+        rDoitErrorDebugging := true asValue.
+        rDoitErrorDebugging onChangeSend:#evaluateModified to:self
+    ].
+    ^ rDoitErrorDebugging.
+!
+
+rDoitErrorLogging
+
+    rDoitErrorLogging isNil ifTrue:[
+        rDoitErrorLogging := true asValue.
+        rDoitErrorLogging onChangeSend:#evaluateModified to:self
+    ].
+    ^ rDoitErrorLogging.
+!
+
+rDoitLogging
+
+    rDoitLogging isNil ifTrue:[
+        rDoitLogging := true asValue.
+        rDoitLogging onChangeSend:#evaluateModified to:self
+    ].
+    ^ rDoitLogging.
+!
+
+rDoitServerPort
+
+    rDoitServerPort isNil ifTrue:[
+        rDoitServerPort := ValueHolder new.
+        rDoitServerPort onChangeSend:#evaluateModified to:self
+    ].
+    ^ rDoitServerPort.
+!
+
+rDoitsEnabled
+
+    rDoitsEnabled isNil ifTrue:[
+        rDoitsEnabled := true asValue.
+        rDoitsEnabled onChangeSend:#evaluateModified to:self
+    ].
+    ^ rDoitsEnabled.
+! !
+
+!AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'change & update'!
+
+rDoitsEnabledChanged
+
+    self rDoitsEnabled value ifTrue:[
+        RDoItServer isLoaded ifFalse:[RDoItServer autoload].
+        rDoitServerPort value isNil ifTrue:[
+            rDoitServerPort value:(RDoItServer defaultPortNumber).
+        ]
+    ].
+!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    "stub code automatically generated - please change as required"
+
+    changedObject == self rDoitsEnabled ifTrue:[
+        self rDoitsEnabledChanged.
+        ^ self.
+    ].
+
+    super update:something with:aParameter from:changedObject
+! !
+
+!AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'initialization & release'!
+
+closeRequest
+
+    self saveRequest ifFalse:[
+        ^ self
+    ].
+
+    ^ super closeRequest.
+!
+
+initialize
+
+    resources := self class owningClass classResources.
+    self loadRequest.
+    super initialize
+!
+
+postOpen
+!
+
+postOpenAsSubcanvasWith:aBuilder
+
+    self postOpen.
+    ^ super postOpenAsSubcanvasWith:aBuilder
+!
+
+postOpenWith:aBuilder
+
+    self postOpen.
+    ^ super postOpenWith:aBuilder
+! !
+
+!AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'queries'!
+
+hasRDoitServer
+
+    ^ RDoItServer notNil and:[RDoItServer isLoaded]
+!
+
+hasUnsavedChanges
+
+    (self hasRDoitServer and:[RDoItServer isLoaded]) ifTrue:[
+        ^ (
+            self rDoitsEnabled value ~= RDoItServer serverRunning or:[
+            RDoItServer serverRunning and:[
+            (self rDoitLogging value ~= RDoItServer isLogging or:[
+            self rDoitErrorLogging value ~= RDoItServer isErrorLogging or:[
+            self rDoitErrorDebugging value ~= RDoItServer isErrorCatching not or:[
+            self rDoitServerPort value ~= RDoItServer defaultPortNumber]]])]]
+        )
+    ].
+    ^ false
+! !
+
 !AbstractSettingsApplication::SourceAndDebuggerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -6241,9 +7441,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::SourceAndDebuggerSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::SourceAndDebuggerSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::SourceAndDebuggerSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::SourceAndDebuggerSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::SourceAndDebuggerSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::SourceAndDebuggerSettingsAppl open
     "
 
     <resource: #canvas>
@@ -6257,204 +7457,374 @@
           #name: 'Source & Debugger Settings'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 12 14 612 572)
+          #bounds: #(#Rectangle 16 42 677 810)
         )
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#CheckBoxSpec
-              #label: 'Log compiles in Changefile'
-              #name: 'LogCompilesInChangefileCheckBox'
-              #layout: #(#LayoutFrame 5 0 5 0 214 0 28 0)
-              #model: #updChanges
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Log doIts in Changefile'
-              #name: 'LogDoItsInChangefileCheckBox'
-              #layout: #(#LayoutFrame 5 0 30 0 214 0 53 0)
-              #model: #logDoits
-              #translateLabel: true
-            )
-           #(#LabelSpec
-              #label: 'Changefile Name:'
-              #name: 'ChangefileNameLabel'
-              #layout: #(#LayoutFrame 96 0 60 0 300 0 82 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#InputFieldSpec
-              #name: 'ChangeFileNameEntryField'
-              #layout: #(#LayoutFrame 300 0 60 0 -5 1 82 0)
-              #model: #changeFileName
-              #immediateAccept: true
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #acceptOnPointerLeave: false
-            )
-           #(#DividerSpec
-              #name: 'Separator1'
-              #layout: #(#LayoutFrame 0 0.0 95 0 0 1.0 99 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Sourcecode Management'
-              #name: 'SourcecodeManagementCheckBox'
-              #layout: #(#LayoutFrame 5 0 110 0 220 0 132 0)
-              #enableChannel: #cvsIsSetup
-              #model: #useManager
-              #translateLabel: true
-            )
-           #(#ActionButtonSpec
-              #label: 'Setup...'
-              #name: 'SetupButton1'
-              #layout: #(#LayoutFrame -250 1 110 0 -5 1 130 0)
-              #translateLabel: true
-              #model: #setupSourceCodeManager
-              #enableChannel: #useManager
-            )
-           #(#LabelSpec
-              #label: 'Source Cache Dir:'
-              #name: 'SourceCacheDirLabel'
-              #layout: #(#LayoutFrame 96 0 145 0 300 0 167 0)
-              #translateLabel: true
-              #adjust: #right
-            )
-           #(#InputFieldSpec
-              #name: 'SourceCacheDirEntryField'
-              #layout: #(#LayoutFrame 300 0 145 0 -5 1 167 0)
-              #enableChannel: #useManager
-              #model: #sourceCacheDir
-              #immediateAccept: true
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #acceptOnPointerLeave: false
-            )
-           #(#ActionButtonSpec
-              #label: 'Flush Cache now'
-              #name: 'FlushCacheNowButton'
-              #layout: #(#LayoutFrame -250 1 179 0 -5 1 199 0)
-              #translateLabel: true
-              #model: #flushSourceCache
-              #enableChannel: #useManager
-            )
-           #(#ActionButtonSpec
-              #label: 'Condense Cache now'
-              #name: 'CondenseCacheNowButton'
-              #layout: #(#LayoutFrame -250 1 204 0 -5 1 224 0)
-              #translateLabel: true
-              #model: #condenseSourceCache
-              #enableChannel: #useManager
-            )
-           #(#CheckBoxSpec
-              #label: 'If Present, Use Local Source (Suppress Checkout)'
-              #name: 'CheckBox4'
-              #layout: #(#LayoutFrame 50 0 232 0 -5 1 254 0)
-              #model: #localSourceFirst
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Check for halt/error-Sends when Checking in'
-              #name: 'CheckBox5'
-              #layout: #(#LayoutFrame 50 0 257 0 -5 1 279 0)
-              #model: #checkClassesWhenCheckingIn
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator2'
-              #layout: #(#LayoutFrame 0 0.0 282 0 0 1.0 286 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Syntax Coloring'
-              #name: 'SyntaxColoringCheckBox'
-              #layout: #(#LayoutFrame 5 0 292 0 300 0 316 0)
-              #model: #syntaxColoring
-              #translateLabel: true
-            )
-           #(#ActionButtonSpec
-              #label: 'Configure...'
-              #name: 'SyntaxColorButton'
-              #layout: #(#LayoutFrame -250 1 292 0 -5 1 312 0)
-              #translateLabel: true
-              #model: #syntaxColorConfiguration
-              #enableChannel: #syntaxColoring
-            )
-           #(#CheckBoxSpec
-              #label: 'Immediate Selector Check'
-              #name: 'ImmediateSelectorCheckBox'
-              #layout: #(#LayoutFrame 5 0 317 0 300 0 339 0)
-              #enableChannel: #syntaxColoring
-              #model: #fullSelectorCheck
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Auto Format'
-              #name: 'AutoFormatCheckBox'
-              #layout: #(#LayoutFrame 5 0 342 0 300 0 364 0)
-              #model: #autoFormat
-              #translateLabel: true
-            )
-           #(#ActionButtonSpec
-              #label: 'Configure...'
-              #name: 'FormattingConfigurationButton'
-              #layout: #(#LayoutFrame -250 1 342 0 -5 1 362 0)
-              #translateLabel: true
-              #model: #formattingConfiguration
-            )
-           #(#DividerSpec
-              #name: 'Separator3'
-              #layout: #(#LayoutFrame 0 0.0 369 0 0 1.0 373 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Show Error Notifier before Opening Debugger'
-              #name: 'ShowErrorNotifierCheckBox'
-              #layout: #(#LayoutFrame 5 0 378 0 -5 1 400 0)
-              #model: #showErrorNotifier
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Verbose Backtrace by Default in Debugger'
-              #name: 'ShowVerboseStackCheckBox'
-              #layout: #(#LayoutFrame 5 0 403 0 -5 1 428 0)
-              #model: #showVerboseStack
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator4'
-              #layout: #(#LayoutFrame 0 0.0 431 0 0 1.0 435 0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel2'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'ChangeFileBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#CheckBoxSpec
+                          #label: 'Log compiles in Changefile'
+                          #name: 'LogCompilesInChangefileCheckBox'
+                          #layout: #(#LayoutFrame 5 0 5 0 -5 1 27 0)
+                          #model: #updChanges
+                          #translateLabel: true
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Log doIts in Changefile'
+                          #name: 'LogDoItsInChangefileCheckBox'
+                          #layout: #(#LayoutFrame 5 0 30 0 -5 1 52 0)
+                          #model: #logDoits
+                          #translateLabel: true
+                        )
+                       #(#LabelSpec
+                          #label: 'Changefile Name:'
+                          #name: 'ChangefileNameLabel'
+                          #layout: #(#LayoutFrame 5 0 55 0 200 0 77 0)
+                          #translateLabel: true
+                          #adjust: #right
+                        )
+                       #(#InputFieldSpec
+                          #name: 'ChangeFileNameEntryField'
+                          #layout: #(#LayoutFrame 200 0 55 0 -5 1 77 0)
+                          #model: #changeFileName
+                          #immediateAccept: true
+                          #acceptOnReturn: true
+                          #acceptOnTab: true
+                          #acceptOnLostFocus: true
+                          #acceptOnPointerLeave: false
+                        )
+                       #(#DividerSpec
+                          #name: 'Separator5'
+                          #layout: #(#LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 661 90)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'SourceCodeManagementBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VerticalPanelViewSpec
+                          #name: 'VerticalPanel3'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #horizontalLayout: #fit
+                          #verticalLayout: #center
+                          #horizontalSpace: 3
+                          #verticalSpace: 3
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#ViewSpec
+                                #name: 'Box3'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Sourcecode Management'
+                                      #name: 'SourcecodeManagementCheckBox'
+                                      #layout: #(#LayoutFrame 5 0 5 0.0 300 0 27 0)
+                                      #enableChannel: #cvsIsSetup
+                                      #model: #useManager
+                                      #translateLabel: true
+                                    )
+                                   #(#ActionButtonSpec
+                                      #label: 'Setup...'
+                                      #name: 'SetupButton1'
+                                      #layout: #(#LayoutFrame -300 1 5 0.0 -5 1 27 0)
+                                      #translateLabel: true
+                                      #model: #setupSourceCodeManager
+                                      #enableChannel: #useManager
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box4'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#LabelSpec
+                                      #label: 'Source Cache Dir:'
+                                      #name: 'SourceCacheDirLabel'
+                                      #layout: #(#LayoutFrame 5 0 5 0.0 -300 1 27 0)
+                                      #translateLabel: true
+                                      #adjust: #right
+                                    )
+                                   #(#InputFieldSpec
+                                      #name: 'SourceCacheDirEntryField'
+                                      #layout: #(#LayoutFrame -300 1 5 0.0 -5 1 27 0)
+                                      #enableChannel: #useManager
+                                      #model: #sourceCacheDir
+                                      #immediateAccept: true
+                                      #acceptOnReturn: true
+                                      #acceptOnTab: true
+                                      #acceptOnLostFocus: true
+                                      #acceptOnPointerLeave: false
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box1'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#ActionButtonSpec
+                                      #label: 'Flush Cache now'
+                                      #name: 'FlushCacheNowButton'
+                                      #layout: #(#LayoutFrame -300 1 5 0.0 -5 1 27 0)
+                                      #translateLabel: true
+                                      #model: #flushSourceCache
+                                      #enableChannel: #useManager
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box2'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#ActionButtonSpec
+                                      #label: 'Condense Cache now'
+                                      #name: 'CondenseCacheNowButton'
+                                      #layout: #(#LayoutFrame -300 1 5 0.0 -5 1 27 0)
+                                      #translateLabel: true
+                                      #model: #condenseSourceCache
+                                      #enableChannel: #useManager
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box5'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'If Present, Use Local Source (Suppress Checkout)'
+                                      #name: 'CheckBox4'
+                                      #layout: #(#LayoutFrame 30 0 5 0 -5 1 27 0)
+                                      #model: #localSourceFirst
+                                      #translateLabel: true
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box6'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Check for halt/error-Sends when Checking in'
+                                      #name: 'CheckBox5'
+                                      #layout: #(#LayoutFrame 30 0 5 0 -5 1 27 0)
+                                      #model: #checkClassesWhenCheckingIn
+                                      #translateLabel: true
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#DividerSpec
+                                #name: 'Separator6'
+                                #extent: #(#Point 661 4)
+                              )
+                             )
+                           
+                          )
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 661 185)
                   )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                 #(#ViewSpec
+                    #name: 'FormatBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VerticalPanelViewSpec
+                          #name: 'VerticalPanel4'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #horizontalLayout: #fit
+                          #verticalLayout: #center
+                          #horizontalSpace: 3
+                          #verticalSpace: 3
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#ViewSpec
+                                #name: 'Box7'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Syntax Coloring'
+                                      #name: 'SyntaxColoringCheckBox'
+                                      #layout: #(#LayoutFrame 5 0 5 0.0 300 0 27 0)
+                                      #model: #syntaxColoring
+                                      #translateLabel: true
+                                    )
+                                   #(#ActionButtonSpec
+                                      #label: 'Configure...'
+                                      #name: 'SyntaxColorButton'
+                                      #layout: #(#LayoutFrame -300 1 5 0.0 -5 1 27 0)
+                                      #translateLabel: true
+                                      #model: #syntaxColorConfiguration
+                                      #enableChannel: #syntaxColoring
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box8'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Immediate Selector Check'
+                                      #name: 'ImmediateSelectorCheckBox'
+                                      #layout: #(#LayoutFrame 5 0 5 0 -5 1 27 0)
+                                      #enableChannel: #syntaxColoring
+                                      #model: #fullSelectorCheck
+                                      #translateLabel: true
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box9'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Auto Format'
+                                      #name: 'AutoFormatCheckBox'
+                                      #layout: #(#LayoutFrame 5 0 5 0.0 300 0 27 0)
+                                      #model: #autoFormat
+                                      #translateLabel: true
+                                    )
+                                   #(#ActionButtonSpec
+                                      #label: 'Configure...'
+                                      #name: 'FormattingConfigurationButton'
+                                      #layout: #(#LayoutFrame -300 1 5 0.0 -5 1 27 0)
+                                      #translateLabel: true
+                                      #model: #formattingConfiguration
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#DividerSpec
+                                #name: 'Separator7'
+                                #extent: #(#Point 661 4)
+                              )
+                             )
+                           
+                          )
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 661 110)
+                  )
+                 #(#ViewSpec
+                    #name: 'ErrorNotifierBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VerticalPanelViewSpec
+                          #name: 'VerticalPanel5'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #horizontalLayout: #fit
+                          #verticalLayout: #center
+                          #horizontalSpace: 3
+                          #verticalSpace: 3
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#ViewSpec
+                                #name: 'Box10'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Show Error Notifier before Opening Debugger'
+                                      #name: 'ShowErrorNotifierCheckBox'
+                                      #layout: #(#LayoutFrame 5 0 5 0 -5 1 27 0)
+                                      #model: #showErrorNotifier
+                                      #translateLabel: true
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#ViewSpec
+                                #name: 'Box11'
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#CheckBoxSpec
+                                      #label: 'Verbose Backtrace by Default in Debugger'
+                                      #name: 'ShowVerboseStackCheckBox'
+                                      #layout: #(#LayoutFrame 5 0 5 0 -5 1 27 0)
+                                      #model: #showVerboseStack
+                                      #translateLabel: true
+                                    )
+                                   )
+                                 
+                                )
+                                #extent: #(#Point 661 30)
+                              )
+                             #(#DividerSpec
+                                #name: 'Separator9'
+                                #extent: #(#Point 661 4)
+                              )
+                             )
+                           
+                          )
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 661 70)
                   )
                  )
                
@@ -6908,9 +8278,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::StyleSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::StyleSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::StyleSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::StyleSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::StyleSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::StyleSettingsAppl open
     "
 
     <resource: #canvas>
@@ -6932,49 +8302,13 @@
            #(#LabelSpec
               #label: 'Label'
               #name: 'Label1'
-              #layout: #(#LayoutFrame 0 0.0 -71 1 0 1.0 -34 1)
+              #layout: #(#LayoutFrame 0 0.0 -44 1 0 1.0 0 1)
               #style: #(#FontDescription #helvetica #bold #roman 12)
               #translateLabel: true
               #labelChannel: #infoLabelHolder
               #resizeForLabel: true
               #adjust: #left
             )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
            #(#LabelSpec
               #label: 'NoticeText'
               #name: 'Text'
@@ -6993,7 +8327,7 @@
             )
            #(#SequenceViewSpec
               #name: 'StyleList'
-              #layout: #(#LayoutFrame 0 0.0 182 0 0 1.0 -74 1)
+              #layout: #(#LayoutFrame 0 0.0 182 0 0 1.0 -44 1)
               #model: #selectedStyle
               #hasHorizontalScrollBar: true
               #hasVerticalScrollBar: true
@@ -7270,9 +8604,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::SystemMessageSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::SystemMessageSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::SystemMessageSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::SystemMessageSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::SystemMessageSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::SystemMessageSettingsAppl open
     "
 
     <resource: #canvas>
@@ -7286,78 +8620,62 @@
           #name: 'Messages'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 24 22 499 293)
+          #bounds: #(#Rectangle 16 42 491 313)
         )
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#CheckBoxSpec
-              #label: 'VM Info Messages'
-              #name: 'VMInfoMessages'
-              #layout: #(#LayoutFrame 5 0 5 0 -5 1 30 0)
-              #model: #vmInfo
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'VM Error Messages'
-              #name: 'VMErrorMessages'
-              #layout: #(#LayoutFrame 5 0 40 0 -5 1 65 0)
-              #model: #vmErrors
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator2'
-              #layout: #(#LayoutFrame 0 0.0 70 0 0 1 73 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Display Error Messages (Xlib, Xtlib, WinAPI ...)'
-              #name: 'DisplayErrorMessages'
-              #layout: #(#LayoutFrame 5 0 80 0 -5 1 105 0)
-              #model: #displayErrors
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Other Info Messages'
-              #name: 'OtherInfoMessages'
-              #layout: #(#LayoutFrame 4 0 115 0 -5 1 135 0)
-              #model: #classInfos
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator3'
-              #layout: #(#LayoutFrame 2 0.0 144 0 2 1 147 0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel2'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                 #(#VerticalPanelViewSpec
+                    #name: 'VerticalPanel1'
+                    #horizontalLayout: #fit
+                    #verticalLayout: #top
+                    #horizontalSpace: 3
+                    #verticalSpace: 3
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#CheckBoxSpec
+                          #label: 'VM Info Messages'
+                          #name: 'VMInfoMessages'
+                          #model: #vmInfo
+                          #translateLabel: true
+                          #extent: #(#Point 475 22)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'VM Error Messages'
+                          #name: 'VMErrorMessages'
+                          #model: #vmErrors
+                          #translateLabel: true
+                          #extent: #(#Point 475 22)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Display Error Messages (Xlib, Xtlib, WinAPI ...)'
+                          #name: 'DisplayErrorMessages'
+                          #model: #displayErrors
+                          #translateLabel: true
+                          #extent: #(#Point 475 22)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Other Info Messages'
+                          #name: 'OtherInfoMessages'
+                          #model: #classInfos
+                          #translateLabel: true
+                          #extent: #(#Point 475 22)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 475 100)
                   )
                  )
                
@@ -7505,9 +8823,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:AbstractLauncherApplication::ToolsSettingsAppl andSelector:#windowSpec
-     AbstractLauncherApplication::ToolsSettingsAppl new openInterface:#windowSpec
-     AbstractLauncherApplication::ToolsSettingsAppl open
+     UIPainter new openOnClass:AbstractSettingsApplication::ToolsSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::ToolsSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::ToolsSettingsAppl open
     "
 
     <resource: #canvas>
@@ -7526,109 +8844,99 @@
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#CheckBoxSpec
-              #label: 'Use the New Changes Browser'
-              #name: 'ChangesBrowser'
-              #layout: #(#LayoutFrame 5 0 5 0 250 0 30 0)
-              #model: #useNewChangesBrowser
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator1'
-              #layout: #(#LayoutFrame 0 0.0 35 0 0 1 38 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Use the New System Browser'
-              #name: 'NewSystemBrowser'
-              #layout: #(#LayoutFrame 250 0 5 0 0 1 30 0)
-              #model: #useNewSystemBrowser
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator2'
-              #layout: #(#LayoutFrame 0 0.0 70 0 0 1 73 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Use the New VersionDiff Browser'
-              #name: 'VersionDiffBrowser'
-              #layout: #(#LayoutFrame 5 0 40 0 250 0 65 0)
-              #model: #useNewVersionDiffBrowser
-              #translateLabel: true
-            )
-           #(#DividerSpec
-              #name: 'Separator3'
-              #layout: #(#LayoutFrame 0 0.0 105 0 0 1 108 0)
-            )
-           #(#CheckBoxSpec
-              #label: 'Use the New File Browser'
-              #name: 'NewFileBrowser'
-              #layout: #(#LayoutFrame 250 0 40 0 0 1 65 0)
-              #model: #useNewFileBrowser
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Use Hierarchical Inspector'
-              #name: 'HierarchicalInspector'
-              #layout: #(#LayoutFrame 5 0 75 0 250 0 100 0)
-              #model: #useNewInspector
-              #translateLabel: true
-            )
-           #(#CheckBoxSpec
-              #label: 'Show Clock in Launcher'
-              #name: 'Clock'
-              #layout: #(#LayoutFrame 250 0 75 0 0 1 100 0)
-              #model: #showClockInLauncher
-              #translateLabel: true
-            )
-           #(#LabelSpec
-              #label: '''Transcripts Buffer Size:'''
-              #name: 'Label1'
-              #layout: #(#LayoutFrame 9 0 133 0 154 0 155 0)
-              #translateLabel: true
-              #adjust: #left
-            )
-           #(#InputFieldSpec
-              #name: 'Transcripts Buffer Size'
-              #layout: #(#LayoutFrame 159 0 133 0 214 0 155 0)
-              #model: #transcriptBufferSize
-              #type: #number
-              #immediateAccept: true
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #acceptOnPointerLeave: false
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
+           #(#VerticalPanelViewSpec
+              #name: 'VerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #horizontalLayout: #fit
               #verticalLayout: #center
               #horizontalSpace: 3
               #verticalSpace: 3
               #component: 
              #(#SpecCollection
                 #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'OK'
-                    #translateLabel: true
-                    #model: #saveSettings
-                    #enableChannel: #modifiedChannel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Cancel'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Help'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
+                 #(#VerticalPanelViewSpec
+                    #name: 'VerticalPanel2'
+                    #horizontalLayout: #fit
+                    #verticalLayout: #top
+                    #horizontalSpace: 3
+                    #verticalSpace: 3
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#CheckBoxSpec
+                          #label: 'Use the New Changes Browser'
+                          #name: 'ChangesBrowser'
+                          #model: #useNewChangesBrowser
+                          #translateLabel: true
+                          #extent: #(#Point 475 25)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Use the New System Browser'
+                          #name: 'NewSystemBrowser'
+                          #model: #useNewSystemBrowser
+                          #translateLabel: true
+                          #extent: #(#Point 475 25)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Use the New VersionDiff Browser'
+                          #name: 'VersionDiffBrowser'
+                          #model: #useNewVersionDiffBrowser
+                          #translateLabel: true
+                          #extent: #(#Point 475 25)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Use the New File Browser'
+                          #name: 'NewFileBrowser'
+                          #model: #useNewFileBrowser
+                          #translateLabel: true
+                          #extent: #(#Point 475 25)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Use Hierarchical Inspector'
+                          #name: 'HierarchicalInspector'
+                          #model: #useNewInspector
+                          #translateLabel: true
+                          #extent: #(#Point 475 25)
+                        )
+                       #(#CheckBoxSpec
+                          #label: 'Show Clock in Launcher'
+                          #name: 'Clock'
+                          #model: #showClockInLauncher
+                          #translateLabel: true
+                          #extent: #(#Point 475 25)
+                        )
+                       #(#ViewSpec
+                          #name: 'Box1'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: '''Transcripts Buffer Size:'''
+                                #name: 'Label1'
+                                #layout: #(#LayoutFrame 5 0 5 0 200 0 27 0)
+                                #translateLabel: true
+                                #adjust: #left
+                              )
+                             #(#InputFieldSpec
+                                #name: 'Transcripts Buffer Size'
+                                #layout: #(#LayoutFrame 200 0 5 0 -5 1 27 0)
+                                #model: #transcriptBufferSize
+                                #type: #number
+                                #immediateAccept: true
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                              )
+                             )
+                           
+                          )
+                          #extent: #(#Point 475 30)
+                        )
+                       )
+                     
+                    )
+                    #extent: #(#Point 475 190)
                   )
                  )
                
@@ -7829,5 +9137,5 @@
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.5 2002-11-19 15:55:19 penk Exp $'
-! !
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.6 2002-11-25 16:25:13 penk Exp $'
+! !