UIPainter.st
changeset 59 0a2b2ff030a0
parent 58 668eb9eae2ac
child 60 7542ab7fbbfe
--- a/UIPainter.st	Fri Feb 21 20:33:57 1997 +0100
+++ b/UIPainter.st	Tue Feb 25 14:15:56 1997 +0100
@@ -1,26 +1,3 @@
-"
- COPYRIGHT (c) 1995 by Claus Gittinger
-	      All Rights Reserved
-
- This software is furnished under a license and may be used
- only in accordance with the terms of that license and with the
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-
-ApplicationModel subclass:#UIPainter
-	instanceVariableNames:'menu nameField elementMenu workView treeView outletView stringBox
-		actionBox listBox fileBox currentFileName topView propertyFrame
-		whichProperty nameChannel applyAction specClass specSelector
-		specSuperclass aspectHolders specShown specSpecificAspectHolders
-		claus'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-UIPainter'
-!
-
 HorizontalPanelView subclass:#ButtonPanel
 	instanceVariableNames:'receiver argumentToSelector'
 	classVariableNames:''
@@ -28,2853 +5,6 @@
 	privateIn:UIPainter
 !
 
-!UIPainter class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 1995 by Claus Gittinger
-	      All Rights Reserved
-
- This software is furnished under a license and may be used
- only in accordance with the terms of that license and with the
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
-documentation
-"
-    not yet finished, not yet published, not yet released.
-
-    [start with:]
-        UIPainter open
-"
-! !
-
-!UIPainter class methodsFor:'interface specs'!
-
-actionButtonModelSpec
-    "UIPainter new openOnClass:self andSelector:#actionButtonModelSpec"
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'layout:' #(#LayoutFrame 0 0 -1 0 251 0 289 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 6 0 26 0 78 0 216 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#LabelSpec
-                                        #'name:' 'label'
-                                        #'layout:' #(#LayoutFrame 0 0 47 0 57 0 71 0)
-                                        #'label:' 'aspect:'
-                                    )
-                                     #(#LabelSpec
-                                        #'name:' 'label'
-                                        #'layout:' #(#LayoutFrame 0 0 119 0 62 0 143 0)
-                                        #'label:' 'change:'
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #left
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 80 0 24 0 231 0 214 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#InputFieldSpec
-                                        #'name:' 'aspectInput'
-                                        #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0)
-                                        #model: #aspectChannel
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-                                    )
-                                     #(#InputFieldSpec
-                                        #'name:' 'changeInput'
-                                        #'layout:' #(#LayoutFrame 0 0 119 0 163 0 142 0)
-                                        #model: #changeChannel
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #fit
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#ActionButtonSpec
-                              #'name:' 'button'
-                              #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0)
-                              #'label:' 'apply'
-                              #'model:' #setModelAspects
-                          )
-                        )
-                    )
-                    #'labelPosition:' #topLeft
-                    #'showFrame:' false
-                )
-              )
-          )
-          #'window:' 
-           #(#WindowSpec
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 255 292)
-          )
-      )
-!
-
-cancelAndApplySpec
-    "this window spec was automatically generated by the ST/X UIPainter"
-
-    "do not manually edit this - the painter/builder may not be able to
-     handle the specification if its corrupted."
-
-    "
-     UIPainter new openOnClass:UIPainter andSelector:#cancelAndApplySpec
-     UIPainter new openInterface:#cancelAndApplySpec
-    "
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 225 45)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#ActionButtonSpec
-                    #'name:' 'cancel'
-                    #'layout:' #(#LayoutFrame 26 0 13 0 77 0 35 0)
-                    #'label:' 'cancel'
-                    #'model:' #cancel
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'apply'
-                    #'layout:' #(#LayoutFrame 139 0 13 0 190 0 35 0)
-                    #'label:' 'apply'
-                    #'model:' #apply
-                )
-              )
-          )
-      )
-!
-
-colorSpec
-    "UIBuilder new openOnClass:self andSelector:#colorSpec"
-    "Builder new openInterface:#colorSpec"
-
-    <resource: #canvas>
-    ^
-     
-       #(#FullSpec
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'layout:' #(#LayoutFrame 0 0 -1 0 252 0 290 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 6 0 26 0 100 0 215 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#LabelSpec
-                                        #'name:' 'label'
-                                        #'layout:' #(#LayoutFrame 0 0 47 0 87 0 71 0)
-                                        #'label:' 'foreground:'
-                                    )
-                                     #(#LabelSpec
-                                        #'name:' 'label'
-                                        #'layout:' #(#LayoutFrame 0 0 119 0 93 0 143 0)
-                                        #'label:' 'background:'
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #left
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 114 0 24 0 233 0 213 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#InputFieldSpec
-                                        #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0)
-                                        #model: #foregroundColor
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-
-                                    )
-                                     #(#InputFieldSpec
-                                        #'layout:' #(#LayoutFrame 0 0 119 0 163 0 142 0)
-                                        #model: #backgroundColor
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #fit
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#ActionButtonSpec
-                              #'name:' 'button'
-                              #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0)
-                              #'label:' 'apply'
-                              #'model:' #setColors
-                              #tabable: true
-
-                          )
-                        )
-                    )
-                    #'labelPosition:' #topLeft
-                    #'showFrame:' false
-                )
-              )
-          )
-          #'window:' 
-           #(#WindowSpec
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 255 292)
-          )
-      )
-!
-
-geometrySpecForAlignmentOrigin
-    "
-    UIPainter new openOnClass:self andSelector:#geometrySpecForAlignmentOrigin
-    "
-    <resource: #canvas>
-
-    ^
-
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 248 304)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#LabelSpec
-                    #'name:' 'label1'
-                    #'layout:' #(#LayoutFrame 5 0 42 0 48 0 60 0)
-                    #'label:' 'left'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label2'
-                    #'layout:' #(#LayoutFrame 5 0 69 0 48 0 87 0)
-                    #'label:' 'top'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label3'
-                    #'layout:' #(#LayoutFrame 57 0 10 0 103 0 27 0)
-                    #'label:' 'relative'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label4'
-                    #'layout:' #(#LayoutFrame 154 0 11 0 190 0 28 0)
-                    #'label:' 'offset'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label5'
-                    #'layout:' #(#LayoutFrame 5 0 96 0 48 0 114 0)
-                    #'label:' 'align H'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label6'
-                    #'layout:' #(#LayoutFrame 5 0 122 0 48 0 140 0)
-                    #'label:' 'align V'
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField1'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 57 0 42 0 114 0 60 0)
-                    #'model:' #leftFraction
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField2'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 57 0 69 0 114 0 87 0)
-                    #'model:' #topFraction
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField5'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 57 0 96 0 114 0 114 0)
-                    #'model:' #leftAlignmentFraction
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField6'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 56 0 122 0 113 0 140 0)
-                    #'model:' #topAlignmentFraction
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField3'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 154 0 42 0 212 0 60 0)
-                    #'model:' #leftOffset
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField4'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 154 0 69 0 212 0 87 0)
-                    #'model:' #topOffset
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button1'
-                    #'layout:' #(#LayoutFrame 119 0 42 0 138 0 60 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeLeft
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button2'
-                    #'layout:' #(#LayoutFrame 119 0 69 0 138 0 87 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeTop
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button3'
-                    #'layout:' #(#LayoutFrame 216 0 42 0 235 0 60 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetLeft
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button4'
-                    #'layout:' #(#LayoutFrame 216 0 69 0 235 0 87 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetTop
-                )
-
-
-               #(#ActionButtonSpec
-                  #'name:' 'button'
-                  #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0)
-                  #'label:' 'frame'
-                  #'model:' #setLayoutFrame
-                )
-               #(#ActionButtonSpec
-                  #'name:' 'button'
-                  #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0)
-                  #'label:' 'origin'
-                  #'model:' #setLayoutOrigin
-                )
-               #(#ActionButtonSpec
-                  #'name:' 'button'
-                  #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0)
-                  #'label:' 'align'
-                  #'model:' #setAlignmentOrigin
-                  #'initiallyDisabled:' true
-                )
-               #(#ActionButtonSpec
-                  #'layout:' #(#LayoutFrame 96 0 260 0 156 0 290 0)
-                  #'label:' 'apply'
-                  #'model:' #setDimensionForLayoutFrame
-                  #tabable: true
-                )
-
-              )
-          )
-      )
-
-
-!
-
-geometrySpecForLayoutFrame
-    "
-    UIPainter new openOnClass:self andSelector:#geometrySpecForLayoutFrame
-    "
-    <resource: #canvas>
-
-    ^
-
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 300 300)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#LabelSpec
-                    #'name:' 'label left'
-                    #'layout:' #(#LayoutFrame 12 0 39 0 53 0 57 0)
-                    #'label:' 'left'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label top'
-                    #'layout:' #(#LayoutFrame 12 0 67 0 53 0 85 0)
-                    #'label:' 'top'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label right'
-                    #'layout:' #(#LayoutFrame 12 0 95 0 53 0 113 0)
-                    #'label:' 'right'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label bottom'
-                    #'layout:' #(#LayoutFrame 12 0 123 0 53 0 141 0)
-                    #'label:' 'bottom'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label relative'
-                    #'layout:' #(#LayoutFrame 65 0 6 0 110 0 24 0)
-                    #'label:' 'relative'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label offset'
-                    #'layout:' #(#LayoutFrame 159 0 6 0 190 0 24 0)
-                    #'label:' 'offset'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label all relative'
-                    #'layout:' #(#LayoutFrame 12 0 157 0 53 0 175 0)
-                    #'label:' 'all'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label all absolute'
-                    #'layout:' #(#LayoutFrame 159 0 157 0 210 0 175 0)
-                    #'label:' 'all'
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'relative E1'
-                    #'layout:' #(#LayoutFrame 65 0 39 0 113 0 57 0)
-                    #'model:' #leftFraction
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'relative E2'
-                    #'layout:' #(#LayoutFrame 65 0 67 0 113 0 85 0)
-                    #'model:' #topFraction
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'relative E3'
-                    #'layout:' #(#LayoutFrame 65 0 95 0 113 0 113 0)
-                    #'model:' #rightFraction
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'relative E4'
-                    #'layout:' #(#LayoutFrame 65 0 123 0 113 0 141 0)
-                    #'model:' #bottomFraction
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'offset E1'
-                    #'layout:' #(#LayoutFrame 159 0 39 0 210 0 57 0)
-                    #'model:' #leftOffset
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'offset E2'
-                    #'layout:' #(#LayoutFrame 159 0 67 0 210 0 85 0)
-                    #'model:' #topOffset
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'offset E3'
-                    #'layout:' #(#LayoutFrame 159 0 95 0 210 0 113 0)
-                    #'model:' #rightOffset
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'offset E4'
-                    #'layout:' #(#LayoutFrame 159 0 123 0 210 0 141 0)
-                    #'model:' #bottomOffset
-                    #'type:' #numberOrNil
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                    #'acceptOnLostFocus:' true
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'relative B1'
-                    #'layout:' #(#LayoutFrame 117 0 39 0 136 0 57 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeLeft
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'relative B2'
-                    #'layout:' #(#LayoutFrame 117 0 67 0 136 0 85 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeTop
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'relative B3'
-                    #'layout:' #(#LayoutFrame 117 0 95 0 136 0 113 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeRight
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'relative B4'
-                    #'layout:' #(#LayoutFrame 117 0 123 0 136 0 141 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeBottom
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'relative BAll'
-                    #'layout:' #(#LayoutFrame 117 0 157 0 136 0 175 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeAll
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'offset B1'
-                    #'layout:' #(#LayoutFrame 214 0 39 0 233 0 57 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetLeft
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'offset B2'
-                    #'layout:' #(#LayoutFrame 214 0 67 0 233 0 85 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetTop
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'offset B3'
-                    #'layout:' #(#LayoutFrame 214 0 95 0 233 0 113 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetRight
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'offset B4'
-                    #'layout:' #(#LayoutFrame 214 0 123 0 233 0 141 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetBottom
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'offset BAll'
-                    #'layout:' #(#LayoutFrame 214 0 157 0 233 0 175 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetAll
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button'
-                    #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0)
-                    #'label:' 'frame'
-                    #'model:' #setLayoutFrame
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button10'
-                    #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0)
-                    #'label:' 'origin'
-                    #'model:' #setLayoutOrigin
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button11'
-                    #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0)
-                    #'label:' 'align'
-                    #'model:' #setAlignmentOrigin
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button12'
-                    #'layout:' #(#LayoutFrame 96 0 260 0 156 0 290 0)
-                    #'label:' 'apply'
-                    #'model:' #setDimensionForLayoutFrame
-                )
-              )
-          )
-      )
-
-
-!
-
-geometrySpecForLayoutOrigin
-    "
-    UIPainter new openOnClass:self andSelector:#geometrySpecForLayoutOrigin
-    "
-    <resource: #canvas>
-
-    ^
-
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 248 304)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#LabelSpec
-                    #'name:' 'label1'
-                    #'layout:' #(#LayoutFrame 16 0 42 0 44 0 60 0)
-                    #'label:' 'left'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label2'
-                    #'layout:' #(#LayoutFrame 16 0 69 0 44 0 87 0)
-                    #'label:' 'top'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label3'
-                    #'layout:' #(#LayoutFrame 57 0 10 0 103 0 27 0)
-                    #'label:' 'relative'
-                )
-                 #(#LabelSpec
-                    #'name:' 'label4'
-                    #'layout:' #(#LayoutFrame 154 0 11 0 190 0 28 0)
-                    #'label:' 'offset'
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField1'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 57 0 42 0 114 0 60 0)
-                    #'model:' #leftFraction
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField2'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 57 0 69 0 114 0 87 0)
-                    #'model:' #topFraction
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField3'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 154 0 42 0 212 0 60 0)
-                    #'model:' #leftOffset
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'editField4'
-                    #'type:' #numberOrNil
-                    #'layout:' #(#LayoutFrame 154 0 69 0 212 0 87 0)
-                    #'model:' #topOffset
-                    #acceptOnLostFocus: true
-                    #tabable: true
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button1'
-                    #'layout:' #(#LayoutFrame 119 0 42 0 138 0 60 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeLeft
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button2'
-                    #'layout:' #(#LayoutFrame 119 0 69 0 138 0 87 0)
-                    #'label:' ''
-                    #'model:' #makeRelativeTop
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button3'
-                    #'layout:' #(#LayoutFrame 216 0 42 0 235 0 60 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetLeft
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button4'
-                    #'layout:' #(#LayoutFrame 216 0 69 0 235 0 87 0)
-                    #'label:' ''
-                    #'model:' #makeOffsetTop
-                )
-
-
-               #(#ActionButtonSpec
-                  #'name:' 'button'
-                  #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0)
-                  #'label:' 'frame'
-                  #'model:' #setLayoutFrame
-                )
-               #(#ActionButtonSpec
-                  #'name:' 'button'
-                  #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0)
-                  #'label:' 'origin'
-                  #'model:' #setLayoutOrigin
-                  #'initiallyDisabled:' true
-                )
-               #(#ActionButtonSpec
-                  #'name:' 'button'
-                  #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0)
-                  #'label:' 'align'
-                  #'model:' #setAlignmentOrigin
-                )
-               #(#ActionButtonSpec
-                  #'layout:' #(#LayoutFrame 96 0 260 0 156 0 290 0)
-                  #'label:' 'apply'
-                  #'model:' #setDimensionForLayoutFrame
-                  #tabable: true
-                )
-
-              )
-          )
-      )
-
-
-!
-
-miscSpec
-    "UIBuilder new openOnClass:self andSelector:#miscSpec"
-    "Builder new openInterface:#miscSpec"
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'layout:' #(#LayoutFrame 0 0 -1 0 251 0 289 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 6 0 26 0 61 0 215 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#LabelSpec
-                                        #'layout:' #(#LayoutFrame 0 0 47 0 57 0 71 0)
-                                        #'label:' 'name:'
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #left
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 60 0 24 0 230 0 213 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#InputFieldSpec
-                                        #model: #nameChannel
-                                        #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0)
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #fit
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#ActionButtonSpec
-                              #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0)
-                              #'label:' 'apply'
-                              #'model:' #setMiscAspects
-                              #tabable: true
-                          )
-                        )
-                    )
-                    #'labelPosition:' #topLeft
-                    #'showFrame:' false
-                )
-              )
-          )
-          #'window:' 
-           #(#WindowSpec
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 255 292)
-          )
-      )
-!
-
-modelSpec
-    "UIBuilder new openOnClass:self andSelector:#modelSpec"
-    "Builder new openInterface:#modelSpec"
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'layout:' #(#LayoutFrame 0 0 -1 0 251 0 289 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 6 0 26 0 78 0 216 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#LabelSpec
-                                        #'name:' 'label'
-                                        #'layout:' #(#LayoutFrame 0 0 47 0 57 0 71 0)
-                                        #'label:' 'aspect:'
-                                    )
-                                     #(#LabelSpec
-                                        #'name:' 'label'
-                                        #'layout:' #(#LayoutFrame 0 0 119 0 62 0 143 0)
-                                        #'label:' 'change:'
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #left
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#VerticalPanelViewSpec
-                              #'layout:' #(#LayoutFrame 80 0 24 0 231 0 214 0)
-                              #'component:' 
-                               #(#SpecCollection
-                                  #'collection:' 
-                                   #(
-                                     #(#InputFieldSpec
-                                        #'name:' 'aspectInput'
-                                        #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0)
-                                        #model: #aspectChannel
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-                                    )
-                                     #(#InputFieldSpec
-                                        #'name:' 'changeInput'
-                                        #'layout:' #(#LayoutFrame 0 0 119 0 163 0 142 0)
-                                        #model: #changeChannel
-                                        #acceptOnLostFocus: true
-                                        #tabable: true
-                                    )
-                                  )
-                              )
-                              #'horizontalLayout:' #fit
-                              #'verticalLayout:' #spreadSpace
-                          )
-                           #(#ActionButtonSpec
-                              #'name:' 'button'
-                              #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0)
-                              #'label:' 'apply'
-                              #'model:' #setModelAspects
-                          )
-                        )
-                    )
-                    #'labelPosition:' #topLeft
-                    #'showFrame:' false
-                )
-              )
-          )
-          #'window:' 
-           #(#WindowSpec
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 255 292)
-          )
-      )
-!
-
-nameAndSelectorSpec
-    "this window spec was automatically generated by the ST/X UIPainter"
-
-    "do not manually edit this - the painter/builder may not be able to
-     handle the specification if its corrupted."
-
-    "UIPainter new openOnClass:self andSelector:#nameAndSelectorSpec"
-
-    <resource: #canvas>
-
-    ^
-
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 300 300)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#LabelSpec
-                    #'name:' 'label1'
-                    #'layout:' #(#LayoutFrame 10 0 50 0 110 0 70 0)
-                    #'label:' 'class:'
-                    #'adjust:' #right
-                )
-                 #(#LabelSpec
-                    #'name:' 'label2'
-                    #'layout:' #(#LayoutFrame 10 0 90 0 110 0 110 0)
-                    #'label:' 'superclass:'
-                    #'adjust:' #right
-                )
-                 #(#LabelSpec
-                    #'name:' 'label3'
-                    #'layout:' #(#LayoutFrame 10 0 130 0 110 0 150 0)
-                    #'label:' 'selector:'
-                    #'adjust:' #right
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'classNameField'
-                    #'layout:' #(#LayoutFrame 120 0 50 0 289 0 69 0)
-                    #'model:' #classNameChannel
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'superclassNameField'
-                    #'layout:' #(#LayoutFrame 120 0 90 0 289 0 109 0)
-                    #'model:' #superclassNameChannel
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'methodNameField'
-                    #'layout:' #(#LayoutFrame 120 0 130 0 289 0 149 0)
-                    #'model:' #methodNameChannel
-                    #'immediateAccept:' false
-                    #'acceptOnLeave:' true
-                    #'acceptOnReturn:' true
-                    #'acceptOnTab:' true
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button1'
-                    #'layout:' #(#LayoutFrame 30 0 250 0 129 0 279 0)
-                    #'label:' 'cancel'
-                    #'model:' #cancel
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button2'
-                    #'layout:' #(#LayoutFrame 160 0 250 0 259 0 279 0)
-                    #'label:' 'ok'
-                    #'model:' #accept
-                )
-              )
-          )
-      )
-
-
-
-!
-
-propertyFrameSpec
-    "this window spec was automatically generated by the ST/X UIPainter"
-
-    "do not manually edit this - the painter/builder may not be able to
-     handle the specification if its corrupted."
-
-    "UIPainter new openOnClass:UIPainter andSelector:#propertyFrameSpec"
-    "UIPainter new openInterface:#propertyFrameSpec"
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #'label:' 'unnamed'
-              #'bounds:' #(#Rectangle 0 0 309 326)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#ArbitraryComponentSpec
-                    #'name:' 'view1'
-                    #'layout:' #(#LayoutFrame 0 0 0 0 0 1.0 -40 1.0)
-                )
-                 #(#ActionButtonSpec
-                    #'name:' 'button1'
-                    #'layout:' #(#LayoutFrame 108 0 291 0 200 0 323 0)
-                    #'label:' 'apply'
-                )
-              )
-          )
-      )
-! !
-
-!UIPainter methodsFor:'BuilderView interface'!
-
-update:something
-    |singleSelection|
-
-    elementMenu deselect.
-
-    singleSelection := workView singleSelection.
-
-    something == #selection ifTrue:[
-        claus setupView:singleSelection.
-    ].
-
-    (something == #layout or:[something == #any]) ifTrue:[
-        singleSelection notNil ifTrue:[
-            self fetchLayoutFrom:singleSelection
-        ].
-        ^ self
-    ].
-
-    (something == #aspects or:[something == #any]) ifTrue:[
-        singleSelection notNil ifTrue:[
-            self fetchModelAspectsFrom:singleSelection
-        ].
-        ^ self
-    ].
-
-    (something == #selection or:[something == #any]) ifTrue:[
-        self showPropertyView.
-        self showOutletsFor:(workView selection).
-
-        singleSelection isNil ifFalse:[
-            nameChannel isNil ifTrue:[self nameChannel].
-            nameChannel value:singleSelection name.
-
-            self fetchLayoutFrom:singleSelection.
-            self fetchColorsFrom:singleSelection.
-            self fetchModelAspectsFrom:singleSelection.
-        ].
-        ^ self
-    ].
-! !
-
-!UIPainter methodsFor:'aspects'!
-
-aspectFor:aKey
-    ^ specSpecificAspectHolders at:aKey ifAbsent:[
-        aspectHolders at:aKey ifAbsent:[
-            super aspectFor:aKey
-        ]
-    ]
-
-!
-
-nameChannel
-    nameChannel isNil ifTrue:[
-	nameChannel := '' asValue.
-    ].
-    ^ nameChannel
-
-    "Modified: 6.9.1995 / 00:38:00 / claus"
-! !
-
-!UIPainter methodsFor:'filein & fileout'!
-
-openFile:aFileName
-    |aStream |
-
-    aStream := FileStream readonlyFileNamed:aFileName.
-    aStream notNil ifTrue:[
-	workView fileInContentsFrom:aStream.
-	aStream close.
-	currentFileName := aFileName
-    ]
-
-!
-
-saveAs:aFileName
-    |aStream|
-
-    aStream := FileStream newFileNamed:aFileName.
-    aStream notNil ifTrue:[
-	workView storeContentsOn:aStream.
-	aStream close
-    ].
-    currentFileName := aFileName
-
-! !
-
-!UIPainter methodsFor:'help'!
-
-helpTextFor:aComponent
-    |sel|
-
-    (aComponent isKindOf:Button) ifTrue:[
-	(sel := aComponent changeMessage) notNil ifTrue:[
-	    "/ take the buttons change symbol as resource-key
-	    ^ resources string:(sel asString)
-	]
-    ].
-    ^ nil
-
-    "Modified: 31.8.1995 / 20:49:58 / claus"
-! !
-
-!UIPainter methodsFor:'initialization'!
-
-createCanvas 
-    |topView|
-
-    super initialize.
-
-    topView := StandardSystemView new.
-    topView label:'unnamed'.
-    topView extent:300@300.
-    topView application:self.
-
-    workView := UIPainterView in:topView.
-    workView layout:(0.0 @ 0.0 corner:1.0 @ 1.0) asLayout.
-
-    ^ workView.
-
-    "Builder new createCanvas open"
-!
-
-createPaletteIn:aViewOrNil
-    |topView v|
-
-    aViewOrNil isNil ifTrue:[
-        topView := StandardSystemView new.
-        topView label:'element palette'.
-        topView extent:200@400.
-    ] ifFalse:[
-        topView := aViewOrNil
-    ].
-    v := HVScrollableView for:SelectionInListView miniScrollerH:true in:topView.
-    v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-    elementMenu := v scrolledView.
-
-    ^ elementMenu.
-
-    "(Builder new createPaletteIn:nil) topView open"
-
-    "Modified: 5.9.1995 / 23:52:57 / claus"
-!
-
-initChannels
-    |cls|
-
-    specSpecificAspectHolders := IdentityDictionary new.
-    aspectHolders := IdentityDictionary new.
-
-    aspectHolders at:#classNameChannel put:(
-        (specClass notNil ifTrue:[specClass]
-                         ifFalse:['NewApplication']) asValue
-    ).
-    specSuperclass isNil ifTrue:[
-        specClass notNil ifTrue:[
-            (cls := Smalltalk at:specClass asSymbol) notNil ifTrue:[
-                specSuperclass := cls superclass name.
-            ]
-        ]
-    ].
-    aspectHolders at:#superclassNameChannel put:(
-        (specSuperclass notNil ifTrue:[specSuperclass]
-                         ifFalse:['ApplicationModel']) asValue
-    ).
-    aspectHolders at:#methodNameChannel put:(
-        (specSelector notNil ifTrue:[specSelector]
-                            ifFalse:[#windowSpec]) asValue
-    ).
-
-    aspectHolders at:#aspectChannel put:(ValueHolder new).
-    aspectHolders at:#changeChannel put:(ValueHolder new).
-
-    aspectHolders at:#foregroundColor put:(ValueHolder new).
-    aspectHolders at:#backgroundColor put:(ValueHolder new).
-
-    #( bottomFraction leftFraction topFraction rightFraction leftAlignmentFraction
-       bottomOffset   leftOffset   topOffset   rightOffset   topAlignmentFraction
-     )
-     do:[:aChannel| aspectHolders at:aChannel put:(ValueHolder new) ].
-!
-
-initPullDownMenu
-    menu labels:(resources  array:#(
-                                    'file'
-                                    'font'
-                                    'type'
-                                    'align'
-                                    'dimension'
-                                    'special'
-                                    'code'
-                                    'test'
-                                 )).
-
-    menu selectors:#(#file
-                     #font
-                     #type
-                     #align 
-                     #dimension 
-                     #special
-                     #code
-                     #test
-                    ).
-
-    menu at:#file 
-            putLabels:(resources  array:
-                      #('new'
-                        'from class ...' 
-                        'pick a view ' 
-                        '-'
-                        'save' 
-                        'save as ...' 
-                        '-'
-                        'install' 
-                        '-'
-"/                        'source' 
-                        'windowSpec' 
-                        'inspect me' 
-                        '-'
-                        'print'
-                        '-'
-                        'quit'
-                       ))
-            selectors:#(doNew 
-                        doFromClass
-                        doPickAView
-                        nil
-                        doSave 
-                        doSaveAs 
-                        nil 
-                        doInstall 
-                        nil 
-"/                        doSource 
-                        doWindowSpec 
-                        inspect
-                        nil 
-                        doPrint
-                        nil 
-                        doFinish
-                       )
-             receiver:self.
-
-    menu at:#font putMenu:(workView subMenuFont menuView).
-
-    menu at:#type 
-            putLabels:(resources  array:#(
-                        'basic widgets' 
-                        'layout'
-                        'text'
-                        'interactors'
-                        'modal'
-                        'other'
-                        '-'
-                        'all'
-                       ) )
-            selectors:#(showBasicWidgets 
-                        showLayoutWidgets
-                        showTextWidgets
-                        showInteractorWidgets
-                        showModalWidgets
-                        showOtherWidgets
-                        nil
-                        showAllWidgets
-                       )
-             receiver:self.
-
-    menu at:#align     putMenu:(workView subMenuAlign menuView).
-    menu at:#dimension putMenu:(workView subMenuDimension menuView).
-
-    menu at:#special 
-            putLabels:(resources  array:#(
-                        'group radioButtons' 
-                        'group enterFields'
-                        '-'
-                        'delete undo history'
-                       ) )
-            selectors:#(
-                        groupRadioButtons 
-                        groupEnterFields
-                        nil
-                        undoDeleteAll
-                       )
-             receiver:workView.
-
-    menu at:#code 
-            putLabels:(resources  array:#(
-                        'class & method' 
-                       ) )
-            selectors:#(
-                        defineClassAndSelector
-                       )
-             receiver:self.
-
-    menu at:#test 
-            putLabels:(resources array:#(
-                        'test on' 
-                       ) )
-            selectors:#(toggleTest 
-                       )
-             receiver:self.
-!
-
-openInterface 
-    |list v topInset menuInset leftPanel middlePanel rightPanel buttonPanel propSelector|
-
-    super initialize.
-
-    self initChannels.
-
-    whichProperty := SelectionInList new.
-"/    whichProperty list:#('dimension' 'colors' 'model' 'misc' 'attribute list').
-    whichProperty list:(UISpecification slices collect:[:slice | slice first asString]).
-    whichProperty onChangeSend:#showPropertyView to:self.
-
-    workView :=self createCanvas.
-
-    topView := StandardSystemView new.
-    topView label:'Interface Builder'.
-    topView icon:(Image fromFile:'bitmaps/Builder.xbm' resolution:100).
-    topView extent:(600 @ 400).
-
-    menu        := PullDownMenu in:topView.
-    buttonPanel := ButtonPanel in:topView.
-
-    menuInset := menu preferredExtent y.
-    topInset  := menuInset + buttonPanel preferredExtent y.
-
-    buttonPanel origin:0.0@menuInset corner:1.0@topInset.
-    buttonPanel receiver:workView.
-    leftPanel   := View origin:(0.0 @ 0.0) corner:0.3@1.0 in:topView.
-    leftPanel   topInset:topInset.
-    middlePanel := View origin:(0.3 @ 0.0) corner:0.6@1.0 in:topView.
-    middlePanel topInset:topInset.
-    rightPanel  := View origin:(0.6 @ 0.0) corner:1.0@1.0 in:topView.
-    rightPanel  topInset:topInset.
-
-    v := HVScrollableView for:UIPainterTreeView miniScrollerH:true in:middlePanel.
-    v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-    treeView := v scrolledView.
-
-    propSelector := PopUpList label:'properties' in:rightPanel.
-    propSelector origin:(0.0 @ 0.0) corner:1.0@(propSelector preferredExtent y).
-    propSelector horizontalInset:View viewSpacing.
-    propSelector model:whichProperty.
-
-    propertyFrame := View in:rightPanel.
-    propertyFrame origin:(0.0 @ 0.0) corner:1.0@1.0.
-    propertyFrame topInset:propSelector height + View viewSpacing.
-
-    claus := View origin:(0.0 @ 0.0) corner:1.0@1.0 in:rightPanel.
-    claus := UIPropertyView in:claus receiver:workView.
-
-    elementMenu := self createPaletteIn:leftPanel.
-
-    treeView builderView:workView.  "link workview with treeview"
-
-    workView addDependent:treeView.
-    workView addDependent:self.
-
-    self initPullDownMenu.
-
-    elementMenu action:[:selection |
-        workView testMode ifTrue:[
-            elementMenu deselect
-        ] ifFalse:[
-            selection notNil ifTrue:[
-                workView createWidgetWithClass:
-                        (Smalltalk at:(elementMenu selectionValue asSymbol))
-            ]
-        ]
-    ].
-    topView application:self.   
-    builder window:topView.
-
-    topView beMaster.
-    workView topView beSlave.
-
-    "/ can be created as embedded or side-menu
-    elementMenu topView ~~ topView ifTrue:[
-        elementMenu topView beSlave.
-    ].
-
-    topView open.
-    workView topView openInGroup:(topView windowGroup).
-    elementMenu topView ~~ topView ifTrue:[
-        elementMenu topView openInGroup:(topView windowGroup).
-    ]
-
-    "
-     Builder open
-    "
-
-    "Modified: 6.9.1995 / 00:26:59 / claus"
-!
-
-openNewWindowCanvas
-    self open.
-
-
-!
-
-openOnClass:aClass andSelector:aSelector
-    "open up an interface builder, fetching a spec from someClass
-     via some selector"
-
-    |specArray|
-
-    specClass := aClass name.
-    specSuperclass := aClass superclass name.
-    specSelector :=  aSelector.
-
-    self openInterface.
-    workView className:aClass name.
-    workView methodName:aSelector.
-    workView setupFromSpec:(aClass perform:aSelector).
-!
-
-openOnSpec:aSpecOrSpecArray
-    "open up an interface builder, given some specArray"
-
-    |newBuilder|
-
-    newBuilder := self new.
-! !
-
-!UIPainter methodsFor:'make layout'!
-
-makeLayout:what xOrY:xOrY offset:aBool
-    |view layout extent fraction offset fractSymb offsetSymb|
-
-    view := workView singleSelection.
-
-    view isNil ifTrue:[
-        ^ self
-    ].
-    layout := view geometryLayout.
-
-    layout isLayout ifFalse:[
-        ^ self
-    ].
-    fractSymb  := (what, 'Fraction') asSymbol.
-    offsetSymb := (what,   'Offset') asSymbol.
-
-    (    (layout respondsTo:fractSymb)
-     and:[layout respondsTo:offsetSymb]
-    ) ifTrue:[
-
-        fraction := layout perform:fractSymb.
-        offset   := layout perform:offsetSymb.
-        extent   := (view superView computeExtent) perform:xOrY.
-
-        aBool ifTrue:[
-            offset := offset + ((fraction * extent) asInteger).
-            (aspectHolders at:offsetSymb) value:offset.
-            (aspectHolders at:fractSymb)  value:0.
-        ] ifFalse:[
-            fraction   := (fraction + (offset / extent)) asFloat.
-
-            (fraction > 1.0) ifTrue:[ fraction := 1.0 ].
-            (fraction < 0.0) ifTrue:[ fraction := 0.0 ].
-
-            (aspectHolders at:offsetSymb) value:0.
-            (aspectHolders at:fractSymb)  value:fraction.
-        ]
-    ]
-!
-
-makeOffsetAll
-    self makeOffsetLeft.
-    self makeOffsetTop.
-    self makeOffsetRight.
-    self makeOffsetBottom.
-
-!
-
-makeOffsetBottom
-    self makeLayout:'bottom' xOrY:#y offset:true.
-
-!
-
-makeOffsetLeft
-    self makeLayout:'left' xOrY:#x offset:true.
-
-!
-
-makeOffsetRight
-    self makeLayout:'right' xOrY:#x offset:true.
-
-!
-
-makeOffsetTop
-    self makeLayout:'top' xOrY:#y offset:true.
-
-
-!
-
-makeRelativeAll
-    self makeRelativeLeft.
-    self makeRelativeTop.
-    self makeRelativeRight.
-    self makeRelativeBottom.
-
-!
-
-makeRelativeBottom
-    self makeLayout:'bottom' xOrY:#y offset:false.
-
-!
-
-makeRelativeLeft
-    self makeLayout:'left' xOrY:#x offset:false.
-
-!
-
-makeRelativeRight
-    self makeLayout:'right' xOrY:#x offset:false.
-
-!
-
-makeRelativeTop
-    self makeLayout:'top' xOrY:#y offset:false.
-
-! !
-
-!UIPainter methodsFor:'misc'!
-
-listOfOutletsFor:aViewClass
-    "return a list of outlets for a view-class"
-
-    |l1 l2 all rej|
-
-    (aViewClass == Object) ifTrue:[^ nil].
-
-    l1 := self listOfOutletsFor:(aViewClass superclass).
-    l2 := self listOfOutletsForClass:aViewClass.
-
-    l2 isNil ifTrue:[
-	all := l1
-    ] ifFalse:[
-	l1 isNil ifTrue:[
-	    all := l2
-	] ifFalse:[
-	    all := l1 , l2
-	]
-    ].
-    rej := self rejectOutletsForClass:aViewClass.
-    rej notNil ifTrue:[
-	rej do:[:x |
-	    all := all copyWithout:x
-	]
-    ].
-    ^ all
-!
-
-listOfOutletsForClass:aViewClass
-    "return a list of outlets for a view-class"
-
-    "could this be done automatically ?"
-
-    (aViewClass == Label) ifTrue:[
-	^ #('label'
-	    'iconic-label'
-	    'label layout'
-	    'fixed size'
-	    'foreground-color'
-	    'background-color'
-	   )
-    ].
-    (aViewClass == Button) ifTrue:[
-	^ #(
-	    'active foreground-color'
-	    'active background-color'
-	    'active level'
-	    'passive level'
-	    'press action'
-	   )
-    ].
-    (aViewClass == Toggle) ifTrue:[
-	^ #(
-	    'release action'
-	   )
-    ].
-    (aViewClass == CheckBox) ifTrue:[
-	^ #(
-	    'label'
-	   )
-    ].
-    (aViewClass == FramedBox) ifTrue:[
-	^ #(
-	    'label'
-	    'label position'
-	    'frame shown'
-	   )
-    ].
-    (aViewClass == VerticalPanelView) ifTrue:[
-	^ #(
-	    'horizontal layout'
-	    'vertical layout'
-	   )
-    ].
-    (aViewClass == HorizontalPanelView) ifTrue:[
-	^ #(
-	    'horizontal layout'
-	    'vertical layout'
-	   )
-    ].
-    (aViewClass == VariableVerticalPanel) ifTrue:[
-	^ #(
-	    'handle position'
-	    'style'
-	   )
-    ].
-    (aViewClass == ListView) ifTrue:[
-	^ #(
-	    'contents'
-	   )
-    ].
-    (aViewClass == SelectionInListView) ifTrue:[
-	^ #(
-	    'press action'
-	   )
-    ].
-    (aViewClass == EditField) ifTrue:[
-	^#(
-	   'initialText'
-	   'field type'
-	   'field length'
-	  )
-    ].
-    (aViewClass == View) ifTrue:[
-	^ #(
-	    'level'
-	    'view background-color'
-	   )
-    ].
-    (aViewClass == Scroller) ifTrue:[
-	^ #(
-	    'scroll action'
-	    'asynchronous'
-	    'synchronous'
-	   )
-    ].
-    (aViewClass == ScrollBar) ifTrue:[
-	^ #(
-	    'scroll action'
-	    'scrollDown action'
-	    'scrollUp action'
-	    'asynchronous'
-	    'synchronous'
-	   )
-    ].
-    (aViewClass == HorizontalScrollBar) ifTrue:[
-	^ #(
-	    'scrollLeft action'
-	    'scrollRight action'
-	   )
-    ].
-    (aViewClass == PullDownMenu) ifTrue:[
-	^ #(
-	    'labels'
-	    'actions'
-	   )
-    ].
-    (aViewClass == Separator) ifTrue:[
-	^ #(
-	    'orientation'
-	   )
-    ].
-    ^ nil
-
-    "Modified: 6.9.1995 / 13:42:09 / claus"
-!
-
-rejectOutletsForClass:aViewClass
-    "return a list of suppressed outlets for a view-class"
-
-    "could this be done automatically ?"
-
-    (aViewClass == CheckToggle) ifTrue:[
-	^ #(
-	    'iconic-label'
-	   )
-    ].
-    (aViewClass == CheckBox) ifTrue:[
-	^ #(
-	    'horizontal layout'
-	    'vertical layout'
-	   )
-    ].
-    (aViewClass == HorizontalScrollBar) ifTrue:[
-	^ #(
-	    'scrollUp action'
-	    'scrollDown action'
-	   )
-    ].
-    ^ nil
-
-    "Modified: 4.9.1995 / 18:55:03 / claus"
-!
-
-setupPropertyFromSpec:aSpec
-    "apply is pressed in the geometry-sub view, with a alignmentOrigin selected
-    "
-    |aViewsSpec|
-
-    workView singleSelectionDo:[:selectedView |
-        aViewsSpec := workView generateSpecFor:selectedView.
-        aViewsSpec := aViewsSpec first.
-    ].
-
-    self setupPropertyFromSpec:aSpec for:aViewsSpec
-
-!
-
-setupPropertyFromSpec:aSpec for:aViewsSpec
-    "setup menu from spec
-    "
-    |specBindings|
-
-    outletView := nil.
-
-    specShown ~= aSpec ifTrue:[
-        propertyFrame destroySubViews.
-
-        "/ get aspects from specClass
-        specSpecificAspectHolders := IdentityDictionary new.
-        aViewsSpec class addBindingsTo:specSpecificAspectHolders for:aViewsSpec channel:nil.
-        
-        builder buildFromSpec:aSpec in:propertyFrame.
-        propertyFrame realizeAllSubViews.
-    ].
-    specShown := aSpec
-!
-
-showOutletsFor:aView
-    |c outlets|
-
-    outletView isNil ifTrue:[^ self].
-
-    (aView isKindOf:SimpleView) ifFalse:[
-	outletView list:nil.
-	^ self
-    ].
-    c := aView class.
-
-    outlets := self listOfOutletsFor:c.
-    outletView list:outlets
-
-    "Modified: 5.9.1995 / 21:51:57 / claus"
-! !
-
-!UIPainter methodsFor:'private - fetch'!
-
-fetchColorsFrom:aView
-    |holder|
-
-    holder := self aspectFor:#foregroundColor.
-    (aView respondsTo:#foregroundColor) ifTrue:[
-        holder value:(aView foregroundColor storeString).
-    ] ifFalse:[
-        holder value:nil
-    ].
-    holder := self aspectFor:#backgroundColor.
-    (aView respondsTo:#backgroundColor) ifTrue:[
-        holder value:(aView backgroundColor storeString).
-    ] ifFalse:[
-        holder value:nil
-    ].
-
-!
-
-fetchLayoutFrom:aView
-    |layout extent|
-
-    layout := aView geometryLayout.
-    layout isNil ifTrue:[^ self].
-
-    layout isLayout ifFalse:[
-        layout isRectangle ifTrue:[
-            (aspectHolders at:#leftOffset)   value:(layout left).
-            (aspectHolders at:#rightOffset)  value:(layout right).
-            (aspectHolders at:#topOffset)    value:(layout top).
-            (aspectHolders at:#bottomOffset) value:(layout bottom).
-          ^ self
-        ].
-        layout isPoint ifTrue:[
-            (aspectHolders at:#leftOffset)  value:(layout left).
-            (aspectHolders at:#rightOffset) value:(layout right).
-          ^ self
-        ].
-    ].
-
-    (aspectHolders at:#leftOffset)   value:(layout leftOffset).
-    (aspectHolders at:#leftFraction) value:(layout leftFraction).
-    (aspectHolders at:#topOffset)    value:(layout topOffset).
-    (aspectHolders at:#topFraction)  value:(layout topFraction).
-
-    layout isLayoutFrame ifTrue:[
-        (aspectHolders at:#rightOffset)    value:(layout rightOffset).
-        (aspectHolders at:#bottomOffset)   value:(layout bottomOffset).
-
-        (aspectHolders at:#rightFraction)  value:(layout rightFraction).
-        (aspectHolders at:#bottomFraction) value:(layout bottomFraction).
-
-        (aspectHolders at:#leftAlignmentFraction) value:0.
-        (aspectHolders at:#topAlignmentFraction)  value:0.
-    ] ifFalse:[
-        extent := aView extent.
-
-        (aspectHolders at:#rightOffset)    value:(layout leftOffset + extent x).
-        (aspectHolders at:#bottomOffset)   value:(layout topOffset  + extent y).
-
-        (aspectHolders at:#rightFraction)  value:0.
-        (aspectHolders at:#bottomFraction) value:0.
-
-        layout isAlignmentOrigin ifTrue:[
-            (aspectHolders at:#leftAlignmentFraction) value:(layout leftAlignmentFraction).
-            (aspectHolders at:#topAlignmentFraction)  value:(layout topAlignmentFraction).
-        ] ifFalse:[
-            (aspectHolders at:#leftAlignmentFraction) value:0.
-            (aspectHolders at:#topAlignmentFraction)  value:0.
-        ]
-    ].
-
-
-!
-
-fetchModelAspectsFrom:aView
-    (self aspectFor:#aspectChannel) value:(workView aspectSelectorForView:aView).
-    (self aspectFor:#changeChannel) value:(workView changeSelectorForView:aView).
-
-! !
-
-!UIPainter methodsFor:'setup choices'!
-
-showAllWidgets
-    "create list of basic widgets"
-
-    self showWidgetsWhere:[:class | true]
-!
-
-showBasicWidgets
-    "create list of basic widgets"
-
-    self showWidgetsInCategory:'Views-Basic' 
-			butNot:[:class | class isKindOf:ModalBox class]
-!
-
-showInteractorWidgets
-    "create list of interactor widgets"
-
-    self showWidgetsInCategory:'Views-Interactors'
-			butNot:[:class | class isKindOf:ModalBox class]
-!
-
-showLayoutWidgets
-    "create list of basic widgets"
-
-    self showWidgetsInCategory:'Views-Layout'
-			butNot:[:class | class isKindOf:ModalBox class]
-!
-
-showModalWidgets
-    "create list of modal widgets"
-
-    self showWidgetsWhere:[:class | class isKindOf:ModalBox class]
-!
-
-showOtherWidgets
-    "create list of other widgets"
-
-    |check cat|
-
-    check := [:class |
-		(#('Views-Basic' 
-		   'Views-Interactors'
-		   'Views-Layout'
-		   'Views-Text') includes:class category) not].
-    self showWidgetsWhere:check
-		   butNot:[:class | class isKindOf:ModalBox class]
-!
-
-showTextWidgets
-    "create list of basic widgets"
-
-    self showWidgetsInCategory:'Views-Text'
-			butNot:[:class | class isKindOf:ModalBox class]
-!
-
-showWidgetsInCategory:aCategory
-    "create list of basic widgets"
-
-    self showWidgetsWhere:[:class | class category = aCategory]
-!
-
-showWidgetsInCategory:aCategory butNot:excludeBlock
-    "create list of basic widgets"
-
-    self showWidgetsWhere:[:class | class category = aCategory]
-		   butNot:excludeBlock
-!
-
-showWidgetsWhere:aBlock
-    "create list of widgets where aBlock avaluates to true"
-
-    self showWidgetsWhere:aBlock butNot:[:class | false]
-!
-
-showWidgetsWhere:aBlock butNot:excludeBlock
-    "create list of widgets where aBlock evaluates to true and excludeBlock
-     evaluates to false"
-
-    |list|
-
-    list := OrderedCollection new:0.
-    SimpleView allSubclassesDo:[:aSubclass |
-        (aBlock value:aSubclass) ifTrue:[
-            (excludeBlock value:aSubclass) ifFalse:[
-                list add:(aSubclass name)
-            ]
-        ]
-    ].
-    (aBlock value:View) ifTrue:[
-        (excludeBlock value:View) ifFalse:[
-            list add:'View'
-        ]
-    ].
-    (list size == 0) ifFalse:[
-        list sort
-    ].
-    elementMenu list:list
-! !
-
-!UIPainter methodsFor:'user actions - dimension'!
-
-setAlignmentOrigin
-    "apply is pressed in the geometry-sub view, with a alignmentOrigin selected
-    "
-    self setupPropertyFromSpec:(self class geometrySpecForAlignmentOrigin)
-!
-
-setDimensionForAlignmentOrigin
-    |view layout|
-
-    view := workView singleSelection.
-
-    view notNil ifTrue:[
-        layout := AlignmentOrigin new.
-
-        layout   leftOffset:((aspectHolders at:#leftOffset)   value) ? 0.
-        layout    topOffset:((aspectHolders at:#topOffset)    value) ? 0.
-        layout leftFraction:((aspectHolders at:#leftFraction) value) ? 0.
-        layout  topFraction:((aspectHolders at:#topFraction)  value) ? 0.
-
-        layout leftAlignmentFraction:((aspectHolders at:#leftAlignmentFraction) value) ? 0.
-        layout  topAlignmentFraction:((aspectHolders at:#topAlignmentFraction)  value) ? 0.
-
-        workView setDimension:layout.
-    ]
-!
-
-setDimensionForLayoutFrame
-    |view layout|
-
-    view := workView singleSelection.
-
-    view notNil ifTrue:[
-        layout := LayoutFrame new.
-
-        layout leftOffset:((aspectHolders at:#leftOffset) value) ? 0.
-        layout rightOffset:((aspectHolders at:#rightOffset) value) ? 0.
-        layout topOffset:((aspectHolders at:#topOffset) value) ? 0.
-        layout bottomOffset:((aspectHolders at:#bottomOffset) value) ? 0.
-        layout leftFraction:((aspectHolders at:#leftFraction) value) ? 0.
-        layout rightFraction:((aspectHolders at:#rightFraction) value) ? 0.
-        layout topFraction:((aspectHolders at:#topFraction) value) ? 0.
-        layout bottomFraction:((aspectHolders at:#bottomFraction) value) ? 0.
-
-        workView setDimension:layout.
-    ]
-!
-
-setDimensionForLayoutOrigin
-    |view layout|
-
-    view := workView singleSelection.
-
-    view notNil ifTrue:[
-        layout := LayoutOrigin new.
-
-        layout leftOffset:((aspectHolders at:#leftOffset) value) ? 0.
-        layout topOffset:((aspectHolders at:#topOffset) value) ? 0.
-
-        layout leftFraction:((aspectHolders at:#leftFraction) value) ? 0.
-        layout topFraction:((aspectHolders at:#topFraction) value) ? 0.
-
-        workView setDimension:layout.
-    ]
-!
-
-setLayoutFrame
-    "apply is pressed in the geometry-sub view, with a layoutFrame selected
-    "
-    self setupPropertyFromSpec:(self class geometrySpecForLayoutFrame)
-!
-
-setLayoutOrigin
-    "apply is pressed in the geometry-sub view, with a layoutOrigin selected
-    "
-    self setupPropertyFromSpec:(self class geometrySpecForLayoutOrigin)
-! !
-
-!UIPainter methodsFor:'user interaction'!
-
-closeRequest
-    workView  notNil ifTrue:[workView  release. workView := nil].
-    super closeRequest
-!
-
-closeRequestFor:aTopView
-    aTopView ~~ topView ifTrue:[
-        topView device beep.
-        ^ self
-    ].
-    super closeRequestFor:aTopView
-!
-
-selectOutlet:nr
-    |outlet type sel text box action initialText initialList
-     view prop t val|
-
-    outlet := outletView selectionValue.
-    outletView deselect.
-    view := workView selection.
-    view isNil ifTrue:[
-        self notify:'select something first'.
-        ^ self
-    ].
-    action := [:s | self setOutlet:sel type:type to:s in:view].
-    (outlet = 'label') ifTrue:[
-        type := #string.
-        sel := #label:.
-        text := 'label-text:'.
-        initialText := view label
-    ].
-    (outlet = 'fixed size') ifTrue:[
-        type := #boolean.
-        sel := #sizeFixed:.
-        text := 'size is fix:'.
-    ].
-    (outlet = 'frame shown') ifTrue:[
-        type := #boolean.
-        sel := #showFrame:.
-        text := 'frame is to be drawn:'.
-    ].
-    (outlet = 'labels') ifTrue:[
-        type := #strings.
-        sel := #labels:.
-        initialText := view labels
-    ].
-    (outlet = 'contents') ifTrue:[
-        type := #text.
-        sel := #contents:.
-        initialText := view contents
-    ].
-    (outlet = 'initialText') ifTrue:[
-        type := #string.
-        sel := #initialText:.
-        initialText := view contents
-    ].
-    (outlet = 'field type') ifTrue:[
-        type := #fieldTypeSymbol.
-        sel := #type:.
-        initialList := #(number    
-                         string
-                         password
-                        ).
-        initialText := view converter isNil ifTrue:[#string] ifFalse:[view converter type].
-    ].
-    (outlet = 'field length') ifTrue:[
-        type := #numberOrNil.
-        sel := #maxChars:.
-        text := 'field length (empty -> unlimited)'.
-        initialText := view maxChars isNil ifTrue:[''] ifFalse:[view maxChars printString].
-    ].
-    (outlet = 'level') ifTrue:[
-        type := #number.
-        sel := #level:.
-        initialText := view level printString
-    ].
-    (outlet = 'active level') ifTrue:[
-        type := #number.
-        sel := #onLevel:.
-        initialText := view onLevel printString
-    ].
-    (outlet = 'passive level') ifTrue:[
-        type := #number.
-        sel := #offLevel:.
-        initialText := view offLevel printString
-    ].
-    (outlet = 'iconic-label') ifTrue:[
-        type := #form.
-        sel := #label:.
-        text := 'label-icon:'
-    ].
-    (outlet = 'view background-color') ifTrue:[
-        type := #color.
-        sel := #viewBackground:.
-        text := 'view background color'.
-        initialText := 'Black'
-    ].
-    (outlet = 'foreground-color') ifTrue:[
-        type := #color.
-        sel := #foregroundColor:.
-        text := 'foreground color'.
-        initialText := 'Black'
-    ].
-    (outlet = 'background-color') ifTrue:[
-        type := #color.
-        sel := #backgroundColor:.
-        text := 'background color'.
-        initialText := 'Grey'
-    ].
-    (outlet = 'active foreground-color') ifTrue:[
-        type := #color.
-        sel := #activeForegroundColor:.
-        text := 'active foreground color'.
-        initialText := 'Yellow'
-    ].
-    (outlet = 'active background-color') ifTrue:[
-        type := #color.
-        sel := #activeBackgroundColor:.
-        text := 'active background color'.
-        initialText := 'Grey'
-    ].
-    (outlet = 'scroll action') ifTrue:[
-        type := #block.
-        sel := #scrollAction:.
-        text := 'action block when scrolled'
-    ].
-    (outlet = 'scrollUp action') ifTrue:[
-        type := #block.
-        sel := #scrollUpAction:.
-        text := 'action block when scrolled up'
-    ].
-    (outlet = 'scrollDown action') ifTrue:[
-        type := #block.
-        sel := #scrollDownAction:.
-        text := 'action block when scrolled down'
-    ].
-    (outlet = 'scrollLeft action') ifTrue:[
-        type := #block.
-        sel := #scrollLeftAction:.
-        text := 'action block when scrolled left'
-    ].
-    (outlet = 'scrollRight action') ifTrue:[
-        type := #block.
-        sel := #scrollRightAction:.
-        text := 'action block when scrolled right'
-    ].
-    (outlet = 'press action') ifTrue:[
-        type := #block.
-        sel := #pressAction:.
-        text := 'action block when pressed'
-    ].
-    (outlet = 'release action') ifTrue:[
-        type := #block.
-        sel := #releaseAction:.
-        text := 'action block when released'
-    ].
-    (outlet = 'style') ifTrue:[
-        type := #symbol.
-        sel := #style:.
-        initialList := #(motif next)
-    ].
-    (outlet = 'handle position') ifTrue:[
-        type := #symbol.
-        sel := #handlePosition:.
-        initialList := #(left center right)
-    ].
-    (outlet = 'horizontal layout') ifTrue:[
-        type := #symbol.
-        sel := #horizontalLayout:.
-        text := 'horizontal components layout'.
-        initialList := #(left
-                         leftSpace
-                         leftMax
-                         leftSpaceMax
-                         center 
-                         centerMax 
-                         right 
-                         rightSpace 
-                         rightMax 
-                         rightSpaceMax 
-                         spread 
-                         spreadSpace 
-                         spreadMax 
-                         spreadSpaceMax 
-                         fit
-                         fitSpace).
-        initialText := view horizontalLayout printString
-    ].
-    (outlet = 'vertical layout') ifTrue:[
-        type := #symbol.
-        sel := #verticalLayout:.
-        text := 'vertical components layout'.
-        initialList := #(top    
-                         topSpace
-                         center 
-                         bottom 
-                         bottomSpace 
-                         spread 
-                         spreadSpace 
-                         fit
-                         fitSpace).
-        initialText := view verticalLayout printString
-    ].
-    (outlet = 'label position') ifTrue:[
-        type := #symbol.
-        sel := #labelPosition:.
-        initialList := #(topLeft topCenter topRight bottomLeft bottomCenter bottomRight).
-        initialText := view labelPosition printString
-    ].
-    (outlet = 'label layout') ifTrue:[
-        type := #symbol.
-        sel := #adjust:.
-        initialList := #( left right center centerLeft centerRight fit ).
-        initialText := view adjust printString
-    ].
-    (outlet = 'orientation') ifTrue:[
-        type := #symbol.
-        sel := #orientation:.
-        initialList := #( horizontal vertical ).
-        initialText := view orientation printString
-    ].
-
-    (type == #color) ifTrue:[
-        initialList := #('Black'
-                         'White'
-                         'LightGrey'
-                         'Grey'
-                         'DarkGrey'
-                         'Yellow'
-                         'Red'
-                         'Green'
-                         'Blue'
-                        )
-    ].
-
-    text isNil ifTrue:[
-        text := outlet
-    ].
-
-    "what type of box do we need"
-
-    t := type.
-    ((type == #color) or:[type == #symbol or:[type == #fieldTypeSymbol]]) ifTrue:[
-        t := #list
-    ].
-    ((type == #number) or:[type == #numberOrNil]) ifTrue:[
-        t := #string
-    ].
-    (type == #strings) ifTrue:[
-        t := #text
-    ].
-    (type == #block) ifTrue:[
-        t := #text.
-        initialText := workView outletValueOf:sel for:view.
-        initialText isNil ifTrue:[initialText := '[statements]']
-    ].
-    (type == #block1) ifTrue:[
-        t := #text.
-        type := #block.
-        initialText := workView outletValueOf:sel for:view.
-        initialText isNil ifTrue:[initialText := '[:argument | statements ]']
-    ].
-    (type == #block2) ifTrue:[
-        t := #text.
-        type := #block.
-        initialText := workView outletValueOf:sel for:view.
-        initialText isNil ifTrue:[initialText := '[:arg1 :arg2 | statements ]']
-    ].
-
-    "show a box to enter thing"
-
-    (t == #boolean) ifTrue:[
-        val := Dialog confirmWithCancel:text.
-        (val == true or:[val == false]) ifTrue:[
-            action value:val
-        ].
-        ^ self
-    ].
-    (t == #string) ifTrue:[
-"/        stringBox isNil ifTrue:[
-            stringBox := EnterBox new.
-"/        ].
-        box := stringBox
-    ].
-    (t == #list) ifTrue:[
-"/        listBox isNil ifTrue:[
-            listBox := ListSelectionBox new.
-"/        ].
-        listBox list:initialList.
-        box := listBox
-    ].
-    (t == #text) ifTrue:[
-"/        actionBox isNil ifTrue:[
-            actionBox := TextBox new.
-"/        ].
-        actionBox initialText:initialText.
-        box := actionBox
-    ].
-"
-Transcript show:'outlet: '. Transcript showCR:outlet.
-Transcript show:'type:   '. Transcript showCR:type.
-Transcript show:'sel:    '. Transcript showCR:sel.
-Transcript show:'text:   '. Transcript showCR:text.
-"
-
-    box isNil ifTrue:[
-        self notify:'not yet implemented'
-    ] ifFalse:[
-        box initialText:initialText.
-        box title:text.
-        box action:action.
-        box showAtPointer
-    ]
-
-    "Modified: 6.9.1995 / 13:46:29 / claus"
-!
-
-setColors
-    |fg bg|
-
-    fg := (self aspectFor:#foregroundColor) value.
-
-    (fg notNil and:[fg notEmpty]) ifTrue:[
-        fg := Color readFrom:fg.
-        workView singleSelectionDo:[:selectedView |
-            selectedView foregroundColor:fg
-        ].
-    ].
-    bg := (self aspectFor:#backgroundColor) value.
-
-    (bg notNil and:[bg notEmpty]) ifTrue:[
-        bg := Color readFrom:bg.
-        workView singleSelectionDo:[:selectedView |
-            selectedView backgroundColor:bg
-        ].
-    ].
-!
-
-setMiscAspects
-    "sent when apply is pressen in the misc-sub view"
-
-    workView singleSelectionDo:[:selectedView |
-        selectedView ~~ workView ifTrue:[
-            workView changeVariableNameOf:selectedView to:nameChannel value
-        ]
-    ].
-!
-
-setModelAspects
-    "sent when apply is pressen in the model-sub view"
-
-    |aspectSymbol|
-
-    aspectSymbol := (self aspectFor:#aspectChannel) value.
-    (aspectSymbol notNil and:[aspectSymbol notEmpty]) ifTrue:[
-        aspectSymbol := aspectSymbol asSymbol.
-        workView singleSelectionDo:[:selectedView |
-            selectedView ~~ workView ifTrue:[
-                workView setAspectSelector:aspectSymbol forView:selectedView
-            ].
-        ].
-    ].
-!
-
-setOutlet:outletSymbol type:type to:outletValue in:aView
-    |block val messageSymbol|
-
-    messageSymbol := outletSymbol.
-    val := outletValue.
-    (type == #block) ifTrue:[
-	block := Compiler evaluate:val.
-	(block == #Error) ifTrue:[
-	    self warn:'action will not work in test-mode'.
-	    workView addOutletDefinitionFor:outletSymbol
-				       type:type
-				      value:outletValue
-					for:aView.
-	    ^ self
-	].
-	val := block
-    ].
-    (type == #number) ifTrue:[
-	val := Number readFromString:outletValue onError:0 
-    ].
-    (type == #numberOrNil) ifTrue:[
-	val := Number readFromString:outletValue onError:nil
-    ].
-    (type == #text) ifTrue:[
-	val := outletValue asString
-    ].
-    (type == #strings) ifTrue:[
-	val := outletValue asText
-    ].
-    (type == #symbol) ifTrue:[
-	val := outletValue asSymbol.
-    ].
-    (type == #fieldTypeSymbol) ifTrue:[
-	val := outletValue asSymbol.
-	val == #password ifTrue:[
-	    aView passwordCharacter:$*
-	] ifFalse:[
-	    aView passwordCharacter:nil
-	].
-	val := (PrintConverter new initFor:val).
-	messageSymbol := #converter:
-    ].
-    (type == #color) ifTrue:[
-	val := Color name:outletValue.
-	val isNil ifTrue:[
-	    self warn:('no such color:' , outletValue).
-	    ^ self
-	]
-    ].
-Transcript show:(val printString).
-Transcript showCR:('(' , val class printString , ')').
-
-    workView selectionHiddenDo:[
-	aView perform:messageSymbol with:val.
-	workView elementChanged:aView.
-	aView redraw.
-    ].
-    workView addOutletDefinitionFor:outletSymbol
-			       type:type
-			      value:outletValue
-				for:aView
-
-    "Modified: 6.9.1995 / 13:44:46 / claus"
-!
-
-showPropertyView
-    |v l spec shown possibleProperties slices specIndex slice specSymbol|
-
-    shown := whichProperty selection.
-
-    workView singleSelectionDo:[:selectedView |
-        |aViewsSpec|
-
-        aViewsSpec := workView generateSpecFor:selectedView.
-        aViewsSpec := aViewsSpec first.
-
-        slices := selectedView specClass slices.
-        possibleProperties := slices collect:[:slice | slice first asString].
-        possibleProperties := possibleProperties, #('dimension' 'colors' 'model' 'misc' 'attribute list').
-        possibleProperties ~= whichProperty list ifTrue:[
-            whichProperty list:possibleProperties.
-
-            (possibleProperties includes:shown) ifFalse:[
-                shown := nil.
-            ].
-        ].
-
-        specIndex := slices findFirst:[:slice | slice first = shown].
-        specIndex ~~ 0 ifTrue:[
-            slice := slices at:specIndex.
-            specSymbol := slice at:2.
-            (selectedView specClass respondsTo:specSymbol) ifTrue:[
-                spec := selectedView specClass perform:specSymbol.
-                ^ self setupPropertyFromSpec:spec for:aViewsSpec
-            ]
-        ].
-
-        (shown = 'dimension' or:[shown = 'Position']) ifTrue:[
-            (l := selectedView geometryLayout) notNil ifTrue:[
-                l isLayout ifTrue:[
-                    l isAlignmentOrigin ifTrue:[
-                        spec := self class geometrySpecForAlignmentOrigin
-                    ] ifFalse:[
-                        l isLayoutFrame ifFalse:[
-                            spec := self class geometrySpecForLayoutOrigin
-                        ]
-                    ]
-                ]
-            ].
-            spec isNil ifTrue:[
-                spec := self class geometrySpecForLayoutFrame
-            ].
-            ^ self setupPropertyFromSpec:spec for:aViewsSpec
-        ].
-
-        shown = 'colors' ifTrue:[
-            ^ self setupPropertyFromSpec:(self class colorSpec) for:aViewsSpec
-        ].
-
-        shown = 'model' ifTrue:[
-            ^ self setupPropertyFromSpec:(self class modelSpec) for:aViewsSpec
-        ].
-
-        shown = 'misc' ifTrue:[
-            ^ self setupPropertyFromSpec:(self class miscSpec) for:aViewsSpec
-        ].
-
-        shown = 'attribute list' ifTrue:[
-            specShown ~~ #attributeList ifTrue:[
-                propertyFrame destroySubViews.
-                specSpecificAspectHolders := IdentityDictionary new.
-
-                v := ScrollableView for:SelectionInListView in:propertyFrame.
-                v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-                outletView := v scrolledView.
-                outletView action:[:lineNr | lineNr notNil ifTrue:[self selectOutlet:lineNr]].
-                propertyFrame realizeAllSubViews.
-                specShown := #attributeList.
-            ].
-            self showOutletsFor:(workView selection).
-            ^ self
-        ].
-    ].
-
-    propertyFrame destroySubViews.
-    outletView := nil.
-    specShown := nil.
-    specSpecificAspectHolders := IdentityDictionary new.
-
-! !
-
-!UIPainter methodsFor:'user interaction - dialogs'!
-
-checkClassAndSelector
-    "check for class & superclass"
-
-    |superclass cls|
-
-    specClass isNil ifTrue:[^ false].
-
-    specClass isBehavior ifFalse:[
-        cls := Smalltalk at:specClass asSymbol
-    ] ifTrue:[
-        cls := specClass
-    ].
-    cls isNil ifTrue:[
-        (superclass := Smalltalk at:specSuperclass asSymbol) isNil ifTrue:[
-            self warn:'no class named ' , specSuperclass , ' exists.'.
-            ^ false.
-        ].
-        (self confirm:'create ' , specClass , ' ?') ifTrue:[
-            superclass subclass:(specClass asSymbol)
-                       instanceVariableNames:''
-                       classVariableNames:''
-                       poolDictionaries:''
-                       category:'New-Applications'.
-            ^ true.
-        ].
-        ^ false.
-    ].
-    cls isBehavior ifFalse:[
-        self warn:'a global named ' , specClass , ' exists, but is no class.'.
-        ^ false.
-    ].
-
-    specSuperclass isBehavior ifFalse:[
-        superclass := Smalltalk at:specSuperclass asSymbol
-    ] ifTrue:[
-        superclass := specSuperclass
-    ].
-    specSuperclass notNil ifTrue:[
-        superclass isNil ifTrue:[
-            self warn:'no class named ' , specSuperclass , ' exists.'.
-            ^ false.
-        ].
-
-        (cls isSubclassOf:superclass) ifFalse:[
-            self warn:'a global named ' , specClass , ' exists, but is not a subclass of ' , superclass name , '.'.
-            ^ false.
-        ]
-    ].
-    ^ true
-!
-
-defineClassAndSelector
-    "launch a dialog to define class, superclass and method"
-
-    |again|
-
-    [
-        again := false.
-        (self openDialogInterface:#nameAndSelectorSpec) ifTrue:[
-
-            specClass := (self aspectFor:#classNameChannel) value.
-            specSelector := (self aspectFor:#methodNameChannel) value.
-            specSuperclass := (self aspectFor:#superclassNameChannel) value.
-
-            again := self checkClassAndSelector not.
-            again ifFalse:[
-                workView className:specClass superclassName:specSuperclass selector:specSelector.
-            ].
-        ]
-    ] doWhile:[again]
-
-! !
-
-!UIPainter methodsFor:'user interaction - menu'!
-
-doFinish
-    self closeRequest
-!
-
-doFromClass
-        |className methodName cls sel accepted failed spec s|
-
-        className := '' asValue.
-        methodName := '' asValue.
-        (s := workView className) notNil ifTrue:[
-            className value:s
-        ].
-        (s := workView methodName) notNil ifTrue:[
-            methodName value:s
-        ].
-
-        failed := false.
-        [
-            accepted :=
-                (DialogBox new
-                    addTextLabel:'Classes name:';
-                    addInputFieldOn:className; 
-                    addVerticalSpace;
-                    addTextLabel:'methods name:';
-                    addInputFieldOn:methodName; 
-                    addAbortButton; 
-                    addOkButton; 
-                    open
-                ) accepted.
-
-             accepted ifTrue:[
-                cls := Smalltalk classNamed:className value.
-                cls isNil ifTrue:[
-                    failed := true.
-                    self warn:'no such class'.
-                ] ifFalse:[
-                    sel := methodName value asSymbol.
-                    (cls respondsTo:sel ) ifFalse:[
-                        failed := true.
-                        self warn:'no such method'
-                    ] ifTrue:[
-                        spec := cls perform:sel.
-                        spec isArray ifFalse:[
-                            failed := true.
-                            self warn:'not a windowSpec method'    
-                        ].
-                        "/ ok, got it
-                        workView className:className value.
-                        workView methodName:methodName value.
-                        workView setupFromSpec:spec.
-                        ^ self
-                     ]
-                ]
-             ]
-        ] doWhile:[accepted and:[failed]].
-
-    "Modified: 5.9.1995 / 18:47:57 / claus"
-!
-
-doInstall
-    |code|
-
-    (specClass isNil or:[specSelector isNil]) ifTrue:[
-        self defineClassAndSelector
-    ].
-
-    self checkClassAndSelector ifFalse:[
-        ^ self
-    ].
-
-    workView className:specClass superclassName:specSuperclass selector:specSelector.
-
-    code := workView generateCode.
-    (ReadStream on:code) fileIn.
-
-    "Modified: 4.9.1995 / 17:06:10 / claus"
-!
-
-doNew
-    workView removeAll.
-    ^ self
-
-    "Modified: 5.9.1995 / 20:52:21 / claus"
-!
-
-doOpen
-    fileBox isNil ifTrue:[
-	fileBox := FileSelectionBox
-			title:''
-			"pattern:'*.sib'"
-			okText:''
-			abortText:(Resource name:'BUILDER_ABORT_LABEL'
-					fromFile:'Builder.rs')
-			action:[nil]
-    ].
-    fileBox title:(Resource name:'BUILDER_OPEN_TITLE' fromFile:'Builder.rs').
-    fileBox action:[:fileName | self openFile:fileName].
-    fileBox okText:(Resource name:'BUILDER_OPEN_OK_LABEL' fromFile:'Builder.rs').
-    fileBox showAtPointer
-!
-
-doPickAView
-    |view className methodName cls sel accepted spec s|
-
-    view := Display viewFromUser.
-    view isNil ifTrue:[^ self].
-
-    spec := UISpecification fromView:view topView.
-    self halt.
-
-    "/ ok, got it
-    workView setupFromSpec:spec.
-    workView className:view class name.
-    workView methodName:#newSpec.
-    ^ self
-
-    "Modified: 5.9.1995 / 23:25:53 / claus"
-!
-
-doPrint
-    ^ self
-!
-
-doSave
-    currentFileName notNil ifTrue:[
-	self saveAs:currentFileName
-    ] ifFalse:[
-	self doSaveAs
-    ]
-!
-
-doSaveAs
-    fileBox isNil ifTrue:[
-	fileBox := FileSelectionBox
-			title:''
-			"pattern:'*.draw'"
-			okText:''
-			abortText:(Resource name:'BUILDER_ABORT_LABEL'
-					fromFile:'Builder.rs')
-			action:[nil]
-    ].
-    fileBox title:(Resource name:'BUILDER_SAVE_TITLE' fromFile:'Builder.rs').
-    fileBox action:[:fileName | self saveAs:fileName].
-    fileBox okText:(Resource name:'BUILDER_SAVE_OK_LABEL' fromFile:'Builder.rs').
-    fileBox showAtPointer
-! !
-
-!UIPainter ignoredMethodsFor:'user interaction - menu'!
-
-doSource
-   |code v|
-
-   code := workView generateCode.
-   v := CodeView open.
-   v contents:code.
-   v label:(workView applicationName).
-    ^ self
-
-    "Modified: 5.9.1995 / 21:02:05 / claus"
-! !
-
-!UIPainter methodsFor:'user interaction - menu'!
-
-doWindowSpec
-   |code v|
-
-   code := workView generateWindowSpecMethodSource.
-   v := CodeView open.
-   v contents:code.
-   v label:'windowSpec'.
-    ^ self
-
-    "Modified: 5.9.1995 / 21:04:14 / claus"
-!
-
-toggleTest
-    |m t|
-
-    m := menu menuAt:#test.
-    t := workView testMode not.
-
-    t ifTrue:[
-        m labelAt:#toggleTest put:(resources string:'test off')
-    ] ifFalse:[
-        m labelAt:#toggleTest put:(resources string:'test on')
-    ].
-    workView testMode:t
-! !
-
 !UIPainter::ButtonPanel methodsFor:'accessing'!
 
 receiver
@@ -2984,8 +114,3 @@
     ^ menu
 ! !
 
-!UIPainter class methodsFor:'documentation'!
-
-version
-    ^ '$Header$'
-! !