UIPropertyView.st
changeset 111 c6699a14d3d9
parent 90 c18809a425d0
child 122 c6f7d7881634
equal deleted inserted replaced
110:a00f1446c10b 111:c6699a14d3d9
     1 ApplicationModel subclass:#UIPropertyView
     1 ApplicationModel subclass:#UIPropertyView
     2 	instanceVariableNames:'builderView modified currentView shownSpec propertyAspects
     2 	instanceVariableNames:'window specClass aspects modified modifiedHolder'
     3 		layoutAspects layoutType specBeingEdited specChannel
       
     4 		propertySelection'
       
     5 	classVariableNames:''
     3 	classVariableNames:''
     6 	poolDictionaries:''
     4 	poolDictionaries:''
     7 	category:'Interface-UIPainter'
     5 	category:'Interface-UIPainter'
     8 !
     6 !
     9 
     7 
       
     8 UIPropertyView subclass:#Dimension
       
     9 	instanceVariableNames:'noteBook forView selection layoutTypes'
       
    10 	classVariableNames:''
       
    11 	poolDictionaries:''
       
    12 	privateIn:UIPropertyView
       
    13 !
       
    14 
       
    15 UIPropertyView subclass:#Specification
       
    16 	instanceVariableNames:'specEdited specChannel'
       
    17 	classVariableNames:''
       
    18 	poolDictionaries:''
       
    19 	privateIn:UIPropertyView
       
    20 !
       
    21 
       
    22 !UIPropertyView class methodsFor:'documentation'!
       
    23 
       
    24 documentation
       
    25 "
       
    26     provides tools to the UIPainter accessing and manipulation
       
    27     properties and/or layouts.
       
    28 "
       
    29 
       
    30 ! !
    10 
    31 
    11 !UIPropertyView class methodsFor:'instance creation'!
    32 !UIPropertyView class methodsFor:'instance creation'!
    12 
    33 
    13 in:aTopView builder:aBuilderView
    34 for:aTool in:aTopview
    14     |application|
    35     |cls appl|
    15 
    36 
    16     application := self new.
    37     cls := Smalltalk classNamed:(self name asString, '::', aTool asString).
    17     application in:aTopView builder:aBuilderView.
    38     appl := cls new.
    18   ^ application
    39     appl origin:0.0@0.0 corner:1.0@1.0 in:aTopview.
    19 ! !
    40   ^ appl
    20 
    41 !
    21 !UIPropertyView class methodsFor:'constants'!
    42 
    22 
    43 in:aTopview
    23 titleOfLayoutMenu
    44     |appl|
    24     ^ 'Dimension'
    45 
    25 ! !
    46     appl := self new.
    26 
    47     appl origin:0.0@0.0 corner:1.0@1.0 in:aTopview.
    27 !UIPropertyView class methodsFor:'interface specs'!
    48   ^ appl
       
    49 ! !
       
    50 
       
    51 !UIPropertyView methodsFor:'accessing'!
       
    52 
       
    53 buildFromSpec:aSpec
       
    54     |state subViews backGroundColor|
       
    55 
       
    56     aSpec ~= specClass ifTrue:[
       
    57         window destroySubViews.
       
    58 
       
    59         aSpec notNil ifTrue:[
       
    60             builder buildFromSpec:aSpec in:window.
       
    61             window allViewBackground:(self viewBackground).
       
    62             window realizeAllSubViews
       
    63         ]
       
    64     ].
       
    65     specClass := aSpec.
       
    66     self modified:false
       
    67         
       
    68 !
       
    69 
       
    70 modified
       
    71     "returns modifying state
       
    72     "
       
    73     ^ modified
       
    74 !
       
    75 
       
    76 modified:aState
       
    77     "set modifying state
       
    78     "
       
    79     modified := aState.
       
    80 
       
    81     modifiedHolder notNil ifTrue:[
       
    82         modifiedHolder value ~~ modified ifTrue:[
       
    83             modifiedHolder value:modified
       
    84         ]
       
    85     ]
       
    86 !
       
    87 
       
    88 modifiedHolder
       
    89     "returns the value holder set to true in case of modifying attributes
       
    90     "
       
    91     ^ modifiedHolder
       
    92 !
       
    93 
       
    94 modifiedHolder:aValueHolder
       
    95     "set the value holder set to true in case of modifying attributes
       
    96     "
       
    97     modifiedHolder notNil ifTrue:[
       
    98         modifiedHolder removeDependent:self. 
       
    99     ].
       
   100 
       
   101     (modifiedHolder := aValueHolder) notNil ifTrue:[
       
   102         modifiedHolder addDependent:self.
       
   103         modifiedHolder setValue:modified.
       
   104     ].
       
   105 ! !
       
   106 
       
   107 !UIPropertyView methodsFor:'accessing hierarchy'!
       
   108 
       
   109 lower
       
   110     "bring window to back
       
   111     "
       
   112     self window back
       
   113 !
       
   114 
       
   115 raise
       
   116     "bring window to front
       
   117     "
       
   118     self window raise
       
   119 !
       
   120 
       
   121 viewBackground
       
   122     ^ window viewBackground
       
   123 !
       
   124 
       
   125 viewBackground:aColor
       
   126     window viewBackground:aColor
       
   127 !
       
   128 
       
   129 window
       
   130     "returns window application is running in
       
   131     "
       
   132     ^ window
       
   133 ! !
       
   134 
       
   135 !UIPropertyView methodsFor:'bindings'!
       
   136 
       
   137 aspectFor:aKey
       
   138     "returns aspect for a key or nil
       
   139     "
       
   140     aspects notNil ifTrue:[
       
   141         ^ aspects at:aKey ifAbsent:nil
       
   142     ].
       
   143     ^ super aspectFor:aKey
       
   144 
       
   145 !
       
   146 
       
   147 aspects
       
   148     "returned monitored aspects
       
   149     "
       
   150     ^ aspects
       
   151 !
       
   152 
       
   153 aspects:aListOfAspects
       
   154     "set aspects to be monitored
       
   155     "
       
   156     (aspects := aListOfAspects) notNil ifTrue:[
       
   157         aspects do:[:el | el addDependent:self ].
       
   158     ].
       
   159     self modified:false.
       
   160 ! !
       
   161 
       
   162 !UIPropertyView methodsFor:'change & update'!
       
   163 
       
   164 update:something with:someArgument from:someone
       
   165     "any attribute changed its state in the current specification
       
   166     "
       
   167     someone == modifiedHolder ifTrue:[
       
   168         modified := modifiedHolder value
       
   169     ] ifFalse:[
       
   170         self modified:true
       
   171     ]
       
   172 ! !
       
   173 
       
   174 !UIPropertyView methodsFor:'initialization'!
       
   175 
       
   176 closeRequest
       
   177     modifiedHolder notNil ifTrue:[
       
   178         modifiedHolder removeDependent:self. 
       
   179         modifiedHolder := nil.
       
   180     ].
       
   181 
       
   182     super closeRequest
       
   183 
       
   184 
       
   185 !
       
   186 
       
   187 initialize
       
   188     super initialize.
       
   189     modified := false.
       
   190 !
       
   191 
       
   192 origin:anOrigin corner:aCorner in:aTopview
       
   193     window := SimpleView origin:anOrigin corner:aCorner in:aTopview
       
   194 
       
   195 ! !
       
   196 
       
   197 !UIPropertyView::Dimension class methodsFor:'interface specs'!
    28 
   198 
    29 specificationAlignmentOrigin
   199 specificationAlignmentOrigin
    30     "this window spec was automatically generated by the ST/X UIPainter"
   200     "this window spec was automatically generated by the ST/X UIPainter"
    31 
   201 
    32     "do not manually edit this - the painter/builder may not be able to
   202     "do not manually edit this - the painter/builder may not be able to
    33      handle the specification if its corrupted."
   203      handle the specification if its corrupted."
    34 
   204 
    35     "
   205     "
    36      UIPainter new openOnClass:UIPropertyView andSelector:#specificationAlignmentOrigin
   206      UIPainter new openOnClass:UIPropertyView::Dimension andSelector:#specificationAlignmentOrigin
    37      UIPropertyView new openInterface:#specificationAlignmentOrigin
   207      UIPropertyView::Dimension new openInterface:#specificationAlignmentOrigin
    38     "
   208     "
    39 
   209 
    40     <resource: #canvas>
   210     <resource: #canvas>
    41 
   211 
    42     ^
   212     ^
    43      
   213 
    44        #(#FullSpec
   214        #(#FullSpec
    45           #'window:' 
   215           #'window:' 
    46            #(#WindowSpec
   216            #(#WindowSpec
    47               #'name:' 'uIPainterView'
   217               #'name:' 'uIPainterView'
    48               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   218               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
    52           #'component:' 
   222           #'component:' 
    53            #(#SpecCollection
   223            #(#SpecCollection
    54               #'collection:' 
   224               #'collection:' 
    55                #(
   225                #(
    56                  #(#LabelSpec
   226                  #(#LabelSpec
    57                     #'name:' 'label9'
   227                     #'name:' 'label2'
    58                     #'layout:' #(#AlignmentOrigin 76 0 7 0 1 0)
   228                     #'layout:' #(#AlignmentOrigin 49 0 68 0 1 0)
    59                     #'label:' 'Layout:'
   229                     #'label:' 'top'
    60                     #'initiallyInvisible:' false
   230                     #'level:' 0
    61                     #'translateLabel:' false
   231                     #'adjust:' #right
       
   232                     #'hasCharacterOrientedLabel:' true
       
   233                 )
       
   234                  #(#LabelSpec
       
   235                     #'name:' 'label3'
       
   236                     #'layout:' #(#Point 58 13)
       
   237                     #'label:' 'relative'
    62                     #'level:' 0
   238                     #'level:' 0
    63                     #'adjust:' #center
   239                     #'adjust:' #center
    64                     #'hasCharacterOrientedLabel:' true
   240                     #'hasCharacterOrientedLabel:' true
    65                 )
   241                 )
    66                  #(#PopUpListSpec
   242                  #(#LabelSpec
    67                     #'name:' 'popUpList1'
   243                     #'name:' 'label4'
    68                     #'layout:' #(#LayoutFrame 79 0.0 7 0 -6 1.0 30 0)
   244                     #'layout:' #(#Point 154 14)
    69                     #'label:' 'popup'
   245                     #'label:' 'offset'
    70                     #'initiallyInvisible:' false
   246                     #'level:' 0
    71                     #'translateLabel:' false
   247                     #'adjust:' #center
    72                     #'model:' #layoutType
   248                     #'hasCharacterOrientedLabel:' true
    73                     #'menu:' #layoutTypeList
   249                 )
    74                 )
   250                  #(#LabelSpec
    75                  #(#LabelSpec
   251                     #'name:' 'label5'
    76                     #'name:' 'label2'
   252                     #'layout:' #(#AlignmentOrigin 63 0 140 0 1 0)
    77                     #'layout:' #(#AlignmentOrigin 49 0 103 0 1 0)
   253                     #'label:' 'align H'
    78                     #'label:' 'top'
       
    79                     #'initiallyInvisible:' false
       
    80                     #'translateLabel:' false
       
    81                     #'level:' 0
   254                     #'level:' 0
    82                     #'adjust:' #right
   255                     #'adjust:' #right
    83                     #'hasCharacterOrientedLabel:' true
   256                     #'hasCharacterOrientedLabel:' true
    84                 )
   257                 )
    85                  #(#LabelSpec
   258                  #(#LabelSpec
    86                     #'name:' 'label3'
   259                     #'name:' 'label6'
    87                     #'layout:' #(#Point 58 48)
   260                     #'layout:' #(#AlignmentOrigin 63 0 166 0 1 0)
    88                     #'label:' 'relative'
   261                     #'label:' 'align V'
    89                     #'initiallyInvisible:' false
       
    90                     #'translateLabel:' false
       
    91                     #'level:' 0
       
    92                     #'adjust:' #center
       
    93                     #'hasCharacterOrientedLabel:' true
       
    94                 )
       
    95                  #(#LabelSpec
       
    96                     #'name:' 'label4'
       
    97                     #'layout:' #(#Point 154 49)
       
    98                     #'label:' 'offset'
       
    99                     #'initiallyInvisible:' false
       
   100                     #'translateLabel:' false
       
   101                     #'level:' 0
       
   102                     #'adjust:' #center
       
   103                     #'hasCharacterOrientedLabel:' true
       
   104                 )
       
   105                  #(#LabelSpec
       
   106                     #'name:' 'label5'
       
   107                     #'layout:' #(#AlignmentOrigin 63 0 175 0 1 0)
       
   108                     #'label:' 'align H'
       
   109                     #'initiallyInvisible:' false
       
   110                     #'translateLabel:' false
       
   111                     #'level:' 0
   262                     #'level:' 0
   112                     #'adjust:' #right
   263                     #'adjust:' #right
   113                     #'hasCharacterOrientedLabel:' true
   264                     #'hasCharacterOrientedLabel:' true
   114                 )
   265                 )
   115                  #(#LabelSpec
       
   116                     #'name:' 'label6'
       
   117                     #'layout:' #(#AlignmentOrigin 63 0 201 0 1 0)
       
   118                     #'label:' 'align V'
       
   119                     #'initiallyInvisible:' false
       
   120                     #'translateLabel:' false
       
   121                     #'level:' 0
       
   122                     #'adjust:' #right
       
   123                     #'hasCharacterOrientedLabel:' true
       
   124                 )
       
   125                  #(#InputFieldSpec
   266                  #(#InputFieldSpec
   126                     #'name:' 'editField1'
   267                     #'name:' 'editField1'
   127                     #'layout:' #(#LayoutFrame 58 0 76 0 115 0 94 0)
   268                     #'layout:' #(#LayoutFrame 58 0 41 0 115 0 59 0)
   128                     #'model:' #leftFraction
   269                     #'model:' #leftFraction
   129                     #'tabable:' true
   270                     #'tabable:' true
   130                     #'type:' #numberOrNil
   271                     #'type:' #numberOrNil
   131                     #'immediateAccept:' false
   272                     #'immediateAccept:' true
   132                     #'acceptOnLeave:' true
   273                     #'acceptOnLeave:' true
   133                     #'acceptOnReturn:' true
   274                     #'acceptOnReturn:' true
   134                     #'acceptOnTab:' true
   275                     #'acceptOnTab:' true
   135                     #'acceptOnLostFocus:' true
   276                     #'acceptOnLostFocus:' true
   136                     #'hasBorder:' false
   277                     #'hasBorder:' false
   137                 )
   278                 )
   138                  #(#InputFieldSpec
   279                  #(#InputFieldSpec
   139                     #'name:' 'editField2'
   280                     #'name:' 'editField2'
   140                     #'layout:' #(#LayoutFrame 58 0 103 0 115 0 121 0)
   281                     #'layout:' #(#LayoutFrame 58 0 68 0 115 0 86 0)
   141                     #'model:' #topFraction
   282                     #'model:' #topFraction
   142                     #'tabable:' true
   283                     #'tabable:' true
   143                     #'type:' #numberOrNil
   284                     #'type:' #numberOrNil
   144                     #'immediateAccept:' false
   285                     #'immediateAccept:' true
   145                     #'acceptOnLeave:' true
   286                     #'acceptOnLeave:' true
   146                     #'acceptOnReturn:' true
   287                     #'acceptOnReturn:' true
   147                     #'acceptOnTab:' true
   288                     #'acceptOnTab:' true
   148                     #'acceptOnLostFocus:' true
   289                     #'acceptOnLostFocus:' true
   149                     #'hasBorder:' false
   290                     #'hasBorder:' false
   150                 )
   291                 )
   151                  #(#InputFieldSpec
   292                  #(#InputFieldSpec
   152                     #'name:' 'editField5'
   293                     #'name:' 'editField5'
   153                     #'layout:' #(#LayoutFrame 68 0 175 0 125 0 193 0)
   294                     #'layout:' #(#LayoutFrame 68 0 140 0 125 0 158 0)
   154                     #'model:' #leftAlignmentFraction
   295                     #'model:' #leftAlignmentFraction
   155                     #'tabable:' true
   296                     #'tabable:' true
   156                     #'type:' #numberOrNil
   297                     #'type:' #numberOrNil
   157                     #'immediateAccept:' false
   298                     #'immediateAccept:' true
   158                     #'acceptOnLeave:' true
   299                     #'acceptOnLeave:' true
   159                     #'acceptOnReturn:' true
   300                     #'acceptOnReturn:' true
   160                     #'acceptOnTab:' true
   301                     #'acceptOnTab:' true
   161                     #'acceptOnLostFocus:' true
   302                     #'acceptOnLostFocus:' true
   162                     #'hasBorder:' false
   303                     #'hasBorder:' false
   163                 )
   304                 )
   164                  #(#InputFieldSpec
   305                  #(#InputFieldSpec
   165                     #'name:' 'editField6'
   306                     #'name:' 'editField6'
   166                     #'layout:' #(#LayoutFrame 68 0 201 0 125 0 219 0)
   307                     #'layout:' #(#LayoutFrame 68 0 166 0 125 0 184 0)
   167                     #'model:' #topAlignmentFraction
   308                     #'model:' #topAlignmentFraction
   168                     #'tabable:' true
   309                     #'tabable:' true
   169                     #'type:' #numberOrNil
   310                     #'type:' #numberOrNil
   170                     #'immediateAccept:' false
   311                     #'immediateAccept:' true
   171                     #'acceptOnLeave:' true
   312                     #'acceptOnLeave:' true
   172                     #'acceptOnReturn:' true
   313                     #'acceptOnReturn:' true
   173                     #'acceptOnTab:' true
   314                     #'acceptOnTab:' true
   174                     #'acceptOnLostFocus:' true
   315                     #'acceptOnLostFocus:' true
   175                     #'hasBorder:' false
   316                     #'hasBorder:' false
   176                 )
   317                 )
   177                  #(#InputFieldSpec
   318                  #(#InputFieldSpec
   178                     #'name:' 'editField3'
   319                     #'name:' 'editField3'
   179                     #'layout:' #(#LayoutFrame 154 0 76 0 212 0 94 0)
   320                     #'layout:' #(#LayoutFrame 154 0 41 0 212 0 59 0)
   180                     #'model:' #leftOffset
   321                     #'model:' #leftOffset
   181                     #'tabable:' true
   322                     #'tabable:' true
   182                     #'type:' #numberOrNil
   323                     #'type:' #numberOrNil
   183                     #'immediateAccept:' false
   324                     #'immediateAccept:' true
   184                     #'acceptOnLeave:' true
   325                     #'acceptOnLeave:' true
   185                     #'acceptOnReturn:' true
   326                     #'acceptOnReturn:' true
   186                     #'acceptOnTab:' true
   327                     #'acceptOnTab:' true
   187                     #'acceptOnLostFocus:' true
   328                     #'acceptOnLostFocus:' true
   188                     #'hasBorder:' false
   329                     #'hasBorder:' false
   189                 )
   330                 )
   190                  #(#InputFieldSpec
   331                  #(#InputFieldSpec
   191                     #'name:' 'editField4'
   332                     #'name:' 'editField4'
   192                     #'layout:' #(#LayoutFrame 154 0 103 0 212 0 121 0)
   333                     #'layout:' #(#LayoutFrame 154 0 68 0 212 0 86 0)
   193                     #'model:' #topOffset
   334                     #'model:' #topOffset
   194                     #'tabable:' true
   335                     #'tabable:' true
   195                     #'type:' #numberOrNil
   336                     #'type:' #numberOrNil
   196                     #'immediateAccept:' false
   337                     #'immediateAccept:' true
   197                     #'acceptOnLeave:' true
   338                     #'acceptOnLeave:' true
   198                     #'acceptOnReturn:' true
   339                     #'acceptOnReturn:' true
   199                     #'acceptOnTab:' true
   340                     #'acceptOnTab:' true
   200                     #'acceptOnLostFocus:' true
   341                     #'acceptOnLostFocus:' true
   201                     #'hasBorder:' false
   342                     #'hasBorder:' false
   202                 )
   343                 )
   203                  #(#ActionButtonSpec
   344                  #(#ActionButtonSpec
   204                     #'name:' 'button1'
   345                     #'name:' 'button1'
   205                     #'layout:' #(#LayoutFrame 119 0 76 0 138 0 94 0)
   346                     #'layout:' #(#LayoutFrame 119 0 41 0 138 0 59 0)
   206                     #'label:' ''
   347                     #'label:' ''
   207                     #'translateLabel:' false
       
   208                     #'tabable:' false
       
   209                     #'model:' #makeRelativeLeft
   348                     #'model:' #makeRelativeLeft
       
   349                     #'isTriggerOnDown:' false
       
   350                     #'autoRepeat:' false
   210                 )
   351                 )
   211                  #(#ActionButtonSpec
   352                  #(#ActionButtonSpec
   212                     #'name:' 'button2'
   353                     #'name:' 'button2'
   213                     #'layout:' #(#LayoutFrame 119 0 103 0 138 0 121 0)
   354                     #'layout:' #(#LayoutFrame 119 0 68 0 138 0 86 0)
   214                     #'label:' ''
   355                     #'label:' ''
   215                     #'translateLabel:' false
       
   216                     #'tabable:' false
       
   217                     #'model:' #makeRelativeTop
   356                     #'model:' #makeRelativeTop
       
   357                     #'isTriggerOnDown:' false
       
   358                     #'autoRepeat:' false
   218                 )
   359                 )
   219                  #(#ActionButtonSpec
   360                  #(#ActionButtonSpec
   220                     #'name:' 'button3'
   361                     #'name:' 'button3'
   221                     #'layout:' #(#LayoutFrame 217 0 76 0 236 0 94 0)
   362                     #'layout:' #(#LayoutFrame 217 0 41 0 236 0 59 0)
   222                     #'label:' ''
   363                     #'label:' ''
   223                     #'translateLabel:' false
       
   224                     #'tabable:' false
       
   225                     #'model:' #makeOffsetLeft
   364                     #'model:' #makeOffsetLeft
       
   365                     #'isTriggerOnDown:' false
       
   366                     #'autoRepeat:' false
   226                 )
   367                 )
   227                  #(#ActionButtonSpec
   368                  #(#ActionButtonSpec
   228                     #'name:' 'button4'
   369                     #'name:' 'button4'
   229                     #'layout:' #(#LayoutFrame 217 0 103 0 236 0 121 0)
   370                     #'layout:' #(#LayoutFrame 217 0 68 0 236 0 86 0)
   230                     #'label:' ''
   371                     #'label:' ''
   231                     #'translateLabel:' false
       
   232                     #'tabable:' false
       
   233                     #'model:' #makeOffsetTop
   372                     #'model:' #makeOffsetTop
       
   373                     #'isTriggerOnDown:' false
       
   374                     #'autoRepeat:' false
   234                 )
   375                 )
   235                  #(#ActionButtonSpec
   376                  #(#ActionButtonSpec
   236                     #'name:' 'button8'
   377                     #'name:' 'button8'
   237                     #'layout:' #(#LayoutFrame 119 0 137 0 138 0 155 0)
   378                     #'layout:' #(#LayoutFrame 119 0 102 0 138 0 120 0)
   238                     #'label:' ''
   379                     #'label:' ''
   239                     #'translateLabel:' false
       
   240                     #'tabable:' false
       
   241                     #'model:' #makeRelativeLeftTop
   380                     #'model:' #makeRelativeLeftTop
       
   381                     #'isTriggerOnDown:' false
       
   382                     #'autoRepeat:' false
   242                 )
   383                 )
   243                  #(#ActionButtonSpec
   384                  #(#ActionButtonSpec
   244                     #'name:' 'button9'
   385                     #'name:' 'button9'
   245                     #'layout:' #(#LayoutFrame 217 0 137 0 236 0 155 0)
   386                     #'layout:' #(#LayoutFrame 217 0 102 0 236 0 120 0)
   246                     #'label:' ''
   387                     #'label:' ''
   247                     #'translateLabel:' false
       
   248                     #'tabable:' false
       
   249                     #'model:' #makeOffsetLeftTop
   388                     #'model:' #makeOffsetLeftTop
       
   389                     #'isTriggerOnDown:' false
       
   390                     #'autoRepeat:' false
   250                 )
   391                 )
   251                  #(#LabelSpec
   392                  #(#LabelSpec
   252                     #'name:' 'label7'
   393                     #'name:' 'label7'
   253                     #'layout:' #(#AlignmentOrigin 49 0 137 0 1 0)
   394                     #'layout:' #(#AlignmentOrigin 49 0 102 0 1 0)
   254                     #'label:' 'all'
   395                     #'label:' 'all'
   255                     #'initiallyInvisible:' false
       
   256                     #'translateLabel:' false
       
   257                     #'level:' 0
   396                     #'level:' 0
   258                     #'adjust:' #right
   397                     #'adjust:' #right
   259                     #'hasCharacterOrientedLabel:' true
   398                     #'hasCharacterOrientedLabel:' true
   260                 )
   399                 )
   261                  #(#LabelSpec
   400                  #(#LabelSpec
   262                     #'name:' 'label1'
   401                     #'name:' 'label1'
   263                     #'layout:' #(#AlignmentOrigin 49 0 76 0 1 0)
   402                     #'layout:' #(#AlignmentOrigin 49 0 41 0 1 0)
   264                     #'label:' 'left'
   403                     #'label:' 'left'
   265                     #'initiallyInvisible:' false
       
   266                     #'translateLabel:' false
       
   267                     #'level:' 0
   404                     #'level:' 0
   268                     #'adjust:' #right
   405                     #'adjust:' #right
   269                     #'hasCharacterOrientedLabel:' true
   406                     #'hasCharacterOrientedLabel:' true
   270                 )
   407                 )
   271                  #(#DividerSpec
   408                  #(#DividerSpec
   272                     #'name:' 'separator1'
   409                     #'name:' 'separator1'
   273                     #'layout:' #(#Rectangle 154 177 203 188)
   410                     #'layout:' #(#Rectangle 154 142 203 153)
   274                     #'orientation:' #horizontal
   411                     #'orientation:' #horizontal
   275                 )
   412                 )
   276                  #(#DividerSpec
   413                  #(#DividerSpec
   277                     #'name:' 'separator2'
   414                     #'name:' 'separator2'
   278                     #'layout:' #(#Rectangle 154 208 203 219)
   415                     #'layout:' #(#Rectangle 154 173 203 184)
   279                     #'orientation:' #horizontal
   416                     #'orientation:' #horizontal
   280                 )
   417                 )
   281                  #(#DividerSpec
   418                  #(#DividerSpec
   282                     #'name:' 'separator3'
   419                     #'name:' 'separator3'
   283                     #'layout:' #(#Rectangle 145 187 155 208)
   420                     #'layout:' #(#Rectangle 145 152 155 173)
   284                     #'orientation:' #vertical
   421                     #'orientation:' #vertical
   285                 )
   422                 )
   286                  #(#DividerSpec
   423                  #(#DividerSpec
   287                     #'name:' 'separator4'
   424                     #'name:' 'separator4'
   288                     #'layout:' #(#Rectangle 203 187 213 208)
   425                     #'layout:' #(#Rectangle 203 152 213 173)
   289                     #'orientation:' #vertical
   426                     #'orientation:' #vertical
   290                 )
   427                 )
   291                  #(#ActionButtonSpec
   428                  #(#ActionButtonSpec
   292                     #'name:' 'alignBR'
   429                     #'name:' 'alignBR'
   293                     #'layout:' #(#Rectangle 201 207 213 219)
   430                     #'layout:' #(#Rectangle 201 172 213 184)
   294                     #'label:' ''
   431                     #'label:' ''
   295                     #'translateLabel:' false
       
   296                     #'tabable:' false
       
   297                     #'model:' #makeAlignBottomRight
   432                     #'model:' #makeAlignBottomRight
       
   433                     #'isTriggerOnDown:' false
       
   434                     #'autoRepeat:' false
   298                 )
   435                 )
   299                  #(#ActionButtonSpec
   436                  #(#ActionButtonSpec
   300                     #'name:' 'alignTL'
   437                     #'name:' 'alignTL'
   301                     #'layout:' #(#Rectangle 145 176 157 188)
   438                     #'layout:' #(#Rectangle 145 141 157 153)
   302                     #'label:' ''
   439                     #'label:' ''
   303                     #'translateLabel:' false
       
   304                     #'tabable:' false
       
   305                     #'model:' #makeAlignTopLeft
   440                     #'model:' #makeAlignTopLeft
       
   441                     #'isTriggerOnDown:' false
       
   442                     #'autoRepeat:' false
   306                 )
   443                 )
   307                  #(#ActionButtonSpec
   444                  #(#ActionButtonSpec
   308                     #'name:' 'alignTR'
   445                     #'name:' 'alignTR'
   309                     #'layout:' #(#Rectangle 201 176 213 188)
   446                     #'layout:' #(#Rectangle 201 141 213 153)
   310                     #'label:' ''
   447                     #'label:' ''
   311                     #'translateLabel:' false
       
   312                     #'tabable:' false
       
   313                     #'model:' #makeAlignTopRight
   448                     #'model:' #makeAlignTopRight
       
   449                     #'isTriggerOnDown:' false
       
   450                     #'autoRepeat:' false
   314                 )
   451                 )
   315                  #(#ActionButtonSpec
   452                  #(#ActionButtonSpec
   316                     #'name:' 'alignBL'
   453                     #'name:' 'alignBL'
   317                     #'layout:' #(#Rectangle 145 206 157 218)
   454                     #'layout:' #(#Rectangle 145 171 157 183)
   318                     #'label:' ''
   455                     #'label:' ''
   319                     #'translateLabel:' false
       
   320                     #'tabable:' false
       
   321                     #'model:' #makeAlignBottomLeft
   456                     #'model:' #makeAlignBottomLeft
       
   457                     #'isTriggerOnDown:' false
       
   458                     #'autoRepeat:' false
   322                 )
   459                 )
   323                  #(#ActionButtonSpec
   460                  #(#ActionButtonSpec
   324                     #'name:' 'alignTC'
   461                     #'name:' 'alignTC'
   325                     #'layout:' #(#Rectangle 173 176 185 188)
   462                     #'layout:' #(#Rectangle 173 141 185 153)
   326                     #'label:' ''
   463                     #'label:' ''
   327                     #'translateLabel:' false
       
   328                     #'tabable:' false
       
   329                     #'model:' #makeAlignTopCenter
   464                     #'model:' #makeAlignTopCenter
       
   465                     #'isTriggerOnDown:' false
       
   466                     #'autoRepeat:' false
   330                 )
   467                 )
   331                  #(#ActionButtonSpec
   468                  #(#ActionButtonSpec
   332                     #'name:' 'alignBC'
   469                     #'name:' 'alignBC'
   333                     #'layout:' #(#Rectangle 173 207 185 219)
   470                     #'layout:' #(#Rectangle 173 172 185 184)
   334                     #'label:' ''
   471                     #'label:' ''
   335                     #'translateLabel:' false
       
   336                     #'tabable:' false
       
   337                     #'model:' #makeAlignBottomCenter
   472                     #'model:' #makeAlignBottomCenter
       
   473                     #'isTriggerOnDown:' false
       
   474                     #'autoRepeat:' false
   338                 )
   475                 )
   339                  #(#ActionButtonSpec
   476                  #(#ActionButtonSpec
   340                     #'name:' 'alignLC'
   477                     #'name:' 'alignLC'
   341                     #'layout:' #(#Rectangle 145 191 157 203)
   478                     #'layout:' #(#Rectangle 145 156 157 168)
   342                     #'label:' ''
   479                     #'label:' ''
   343                     #'translateLabel:' false
       
   344                     #'tabable:' false
       
   345                     #'model:' #makeAlignLeftCenter
   480                     #'model:' #makeAlignLeftCenter
       
   481                     #'isTriggerOnDown:' false
       
   482                     #'autoRepeat:' false
   346                 )
   483                 )
   347                  #(#ActionButtonSpec
   484                  #(#ActionButtonSpec
   348                     #'name:' 'alignRC'
   485                     #'name:' 'alignRC'
   349                     #'layout:' #(#Rectangle 201 191 213 203)
   486                     #'layout:' #(#Rectangle 201 156 213 168)
   350                     #'label:' ''
   487                     #'label:' ''
   351                     #'translateLabel:' false
       
   352                     #'tabable:' false
       
   353                     #'model:' #makeAlignRightCenter
   488                     #'model:' #makeAlignRightCenter
       
   489                     #'isTriggerOnDown:' false
       
   490                     #'autoRepeat:' false
   354                 )
   491                 )
   355                  #(#ActionButtonSpec
   492                  #(#ActionButtonSpec
   356                     #'name:' 'alignC'
   493                     #'name:' 'alignC'
   357                     #'layout:' #(#Rectangle 173 191 185 203)
   494                     #'layout:' #(#Rectangle 173 156 185 168)
   358                     #'label:' ''
   495                     #'label:' ''
   359                     #'translateLabel:' false
       
   360                     #'tabable:' false
       
   361                     #'model:' #makeAlignCenter
   496                     #'model:' #makeAlignCenter
       
   497                     #'isTriggerOnDown:' false
       
   498                     #'autoRepeat:' false
   362                 )
   499                 )
   363               )
   500               )
   364           )
   501           )
   365       )
   502       )
       
   503 
       
   504 
   366 !
   505 !
   367 
   506 
   368 specificationExtent
   507 specificationExtent
   369     "this window spec was automatically generated by the ST/X UIPainter"
   508     "this window spec was automatically generated by the ST/X UIPainter"
   370 
   509 
   371     "do not manually edit this - the painter/builder may not be able to
   510     "do not manually edit this - the painter/builder may not be able to
   372      handle the specification if its corrupted."
   511      handle the specification if its corrupted."
   373 
   512 
   374     "
   513     "
   375      UIPainter new openOnClass:UIPropertyView andSelector:#specificationExtent
   514      UIPainter new openOnClass:UIPropertyView::Dimension andSelector:#specificationExtent
   376      UIPropertyView new openInterface:#specificationExtent
   515      UIPropertyView::Dimension new openInterface:#specificationExtent
   377     "
   516     "
   378 
   517 
   379     <resource: #canvas>
   518     <resource: #canvas>
   380 
   519 
   381     ^
   520     ^
   382      
   521 
   383        #(#FullSpec
   522        #(#FullSpec
   384           #'name:' 'uIPainterView'
   523           #'window:' 
   385           #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   524            #(#WindowSpec
       
   525               #'name:' 'uIPainterView'
       
   526               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
   527               #'label:' 'unnamed'
       
   528               #'bounds:' #(#Rectangle 0 0 224 251)
       
   529           )
       
   530           #'component:' 
       
   531            #(#SpecCollection
       
   532               #'collection:' 
       
   533                #(
       
   534                  #(#LabelSpec
       
   535                     #'name:' 'label1'
       
   536                     #'layout:' #(#AlignmentOrigin 99 0 45 0 1 0)
       
   537                     #'label:' 'horizontal:'
       
   538                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   539                     #'level:' 0
       
   540                     #'adjust:' #left
       
   541                     #'hasCharacterOrientedLabel:' true
       
   542                 )
       
   543                  #(#LabelSpec
       
   544                     #'name:' 'label2'
       
   545                     #'layout:' #(#AlignmentOrigin 99 0 72 0 1 0)
       
   546                     #'label:' 'vertical:'
       
   547                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   548                     #'level:' 0
       
   549                     #'adjust:' #left
       
   550                     #'hasCharacterOrientedLabel:' true
       
   551                 )
       
   552                  #(#InputFieldSpec
       
   553                     #'name:' 'editField1'
       
   554                     #'layout:' #(#LayoutFrame 104 0 45 0 197 0 63 0)
       
   555                     #'model:' #leftOffset
       
   556                     #'tabable:' true
       
   557                     #'type:' #numberOrNil
       
   558                     #'immediateAccept:' true
       
   559                     #'acceptOnLeave:' true
       
   560                     #'acceptOnReturn:' true
       
   561                     #'acceptOnTab:' true
       
   562                     #'acceptOnLostFocus:' true
       
   563                     #'hasBorder:' false
       
   564                 )
       
   565                  #(#InputFieldSpec
       
   566                     #'name:' 'editField2'
       
   567                     #'layout:' #(#LayoutFrame 104 0 72 0 197 0 90 0)
       
   568                     #'model:' #rightOffset
       
   569                     #'tabable:' true
       
   570                     #'type:' #numberOrNil
       
   571                     #'immediateAccept:' true
       
   572                     #'acceptOnLeave:' true
       
   573                     #'acceptOnReturn:' true
       
   574                     #'acceptOnTab:' true
       
   575                     #'acceptOnLostFocus:' true
       
   576                     #'hasBorder:' false
       
   577                 )
       
   578                  #(#LabelSpec
       
   579                     #'name:' 'extentLabel'
       
   580                     #'layout:' #(#LayoutFrame 9 0 20 0 63 0 37 0)
       
   581                     #'label:' 'Extent:'
       
   582                     #'level:' 0
       
   583                     #'adjust:' #center
       
   584                     #'hasCharacterOrientedLabel:' true
       
   585                 )
       
   586               )
       
   587           )
       
   588       )
       
   589 
       
   590 !
       
   591 
       
   592 specificationLayoutFrame
       
   593     "this window spec was automatically generated by the ST/X UIPainter"
       
   594 
       
   595     "do not manually edit this - the painter/builder may not be able to
       
   596      handle the specification if its corrupted."
       
   597 
       
   598     "
       
   599      UIPainter new openOnClass:UIPropertyView::Dimension andSelector:#specificationLayoutFrame
       
   600      UIPropertyView::Dimension new openInterface:#specificationLayoutFrame
       
   601     "
       
   602 
       
   603     <resource: #canvas>
       
   604 
       
   605     ^
       
   606 
       
   607        #(#FullSpec
       
   608           #'window:' 
       
   609            #(#WindowSpec
       
   610               #'name:' 'uIPainterView'
       
   611               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
   612               #'label:' 'unnamed'
       
   613               #'bounds:' #(#Rectangle 0 0 238 291)
       
   614           )
       
   615           #'component:' 
       
   616            #(#SpecCollection
       
   617               #'collection:' 
       
   618                #(
       
   619                  #(#LabelSpec
       
   620                     #'name:' 'label left'
       
   621                     #'layout:' #(#AlignmentOrigin 60 0 43 0 1 0)
       
   622                     #'label:' 'left'
       
   623                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   624                     #'level:' 0
       
   625                     #'adjust:' #center
       
   626                     #'hasCharacterOrientedLabel:' true
       
   627                 )
       
   628                  #(#LabelSpec
       
   629                     #'name:' 'label top'
       
   630                     #'layout:' #(#AlignmentOrigin 60 0 71 0 1 0)
       
   631                     #'label:' 'top'
       
   632                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   633                     #'level:' 0
       
   634                     #'adjust:' #center
       
   635                     #'hasCharacterOrientedLabel:' true
       
   636                 )
       
   637                  #(#LabelSpec
       
   638                     #'name:' 'label right'
       
   639                     #'layout:' #(#AlignmentOrigin 60 0 99 0 1 0)
       
   640                     #'label:' 'right'
       
   641                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   642                     #'level:' 0
       
   643                     #'adjust:' #center
       
   644                     #'hasCharacterOrientedLabel:' true
       
   645                 )
       
   646                  #(#LabelSpec
       
   647                     #'name:' 'label bottom'
       
   648                     #'layout:' #(#AlignmentOrigin 60 0 127 0 1 0)
       
   649                     #'label:' 'bottom'
       
   650                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   651                     #'level:' 0
       
   652                     #'adjust:' #center
       
   653                     #'hasCharacterOrientedLabel:' true
       
   654                 )
       
   655                  #(#LabelSpec
       
   656                     #'name:' 'label relative'
       
   657                     #'layout:' #(#Point 65 14)
       
   658                     #'label:' 'relative'
       
   659                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   660                     #'level:' 0
       
   661                     #'adjust:' #center
       
   662                     #'hasCharacterOrientedLabel:' true
       
   663                 )
       
   664                  #(#LabelSpec
       
   665                     #'name:' 'label offset'
       
   666                     #'layout:' #(#Point 159 14)
       
   667                     #'label:' 'offset'
       
   668                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   669                     #'level:' 0
       
   670                     #'adjust:' #center
       
   671                     #'hasCharacterOrientedLabel:' true
       
   672                 )
       
   673                  #(#LabelSpec
       
   674                     #'name:' 'label all relative'
       
   675                     #'layout:' #(#AlignmentOrigin 60 0 161 0 1 0)
       
   676                     #'label:' 'all'
       
   677                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   678                     #'level:' 0
       
   679                     #'adjust:' #center
       
   680                     #'hasCharacterOrientedLabel:' true
       
   681                 )
       
   682                  #(#InputFieldSpec
       
   683                     #'name:' 'relative E1'
       
   684                     #'layout:' #(#LayoutFrame 65 0 43 0 113 0 61 0)
       
   685                     #'model:' #leftFraction
       
   686                     #'type:' #numberOrNil
       
   687                     #'immediateAccept:' true
       
   688                     #'acceptOnLeave:' true
       
   689                     #'acceptOnReturn:' true
       
   690                     #'acceptOnTab:' true
       
   691                     #'acceptOnLostFocus:' true
       
   692                     #'hasBorder:' false
       
   693                 )
       
   694                  #(#InputFieldSpec
       
   695                     #'name:' 'relative E2'
       
   696                     #'layout:' #(#LayoutFrame 65 0 71 0 113 0 89 0)
       
   697                     #'model:' #topFraction
       
   698                     #'type:' #numberOrNil
       
   699                     #'immediateAccept:' true
       
   700                     #'acceptOnLeave:' true
       
   701                     #'acceptOnReturn:' true
       
   702                     #'acceptOnTab:' true
       
   703                     #'acceptOnLostFocus:' true
       
   704                     #'hasBorder:' false
       
   705                 )
       
   706                  #(#InputFieldSpec
       
   707                     #'name:' 'relative E3'
       
   708                     #'layout:' #(#LayoutFrame 65 0 99 0 113 0 117 0)
       
   709                     #'model:' #rightFraction
       
   710                     #'type:' #numberOrNil
       
   711                     #'immediateAccept:' true
       
   712                     #'acceptOnLeave:' true
       
   713                     #'acceptOnReturn:' true
       
   714                     #'acceptOnTab:' true
       
   715                     #'acceptOnLostFocus:' true
       
   716                     #'hasBorder:' false
       
   717                 )
       
   718                  #(#InputFieldSpec
       
   719                     #'name:' 'relative E4'
       
   720                     #'layout:' #(#LayoutFrame 65 0 127 0 113 0 145 0)
       
   721                     #'model:' #bottomFraction
       
   722                     #'type:' #numberOrNil
       
   723                     #'immediateAccept:' true
       
   724                     #'acceptOnLeave:' true
       
   725                     #'acceptOnReturn:' true
       
   726                     #'acceptOnTab:' true
       
   727                     #'acceptOnLostFocus:' true
       
   728                     #'hasBorder:' false
       
   729                 )
       
   730                  #(#InputFieldSpec
       
   731                     #'name:' 'offset E1'
       
   732                     #'layout:' #(#LayoutFrame 159 0 43 0 210 0 61 0)
       
   733                     #'model:' #leftOffset
       
   734                     #'type:' #numberOrNil
       
   735                     #'immediateAccept:' true
       
   736                     #'acceptOnLeave:' true
       
   737                     #'acceptOnReturn:' true
       
   738                     #'acceptOnTab:' true
       
   739                     #'acceptOnLostFocus:' true
       
   740                     #'hasBorder:' false
       
   741                 )
       
   742                  #(#InputFieldSpec
       
   743                     #'name:' 'offset E2'
       
   744                     #'layout:' #(#LayoutFrame 159 0 71 0 210 0 89 0)
       
   745                     #'model:' #topOffset
       
   746                     #'type:' #numberOrNil
       
   747                     #'immediateAccept:' true
       
   748                     #'acceptOnLeave:' true
       
   749                     #'acceptOnReturn:' true
       
   750                     #'acceptOnTab:' true
       
   751                     #'acceptOnLostFocus:' true
       
   752                     #'hasBorder:' false
       
   753                 )
       
   754                  #(#InputFieldSpec
       
   755                     #'name:' 'offset E3'
       
   756                     #'layout:' #(#LayoutFrame 159 0 99 0 210 0 117 0)
       
   757                     #'model:' #rightOffset
       
   758                     #'type:' #numberOrNil
       
   759                     #'immediateAccept:' true
       
   760                     #'acceptOnLeave:' true
       
   761                     #'acceptOnReturn:' true
       
   762                     #'acceptOnTab:' true
       
   763                     #'acceptOnLostFocus:' true
       
   764                     #'hasBorder:' false
       
   765                 )
       
   766                  #(#InputFieldSpec
       
   767                     #'name:' 'offset E4'
       
   768                     #'layout:' #(#LayoutFrame 159 0 127 0 210 0 145 0)
       
   769                     #'model:' #bottomOffset
       
   770                     #'type:' #numberOrNil
       
   771                     #'immediateAccept:' true
       
   772                     #'acceptOnLeave:' true
       
   773                     #'acceptOnReturn:' true
       
   774                     #'acceptOnTab:' true
       
   775                     #'acceptOnLostFocus:' true
       
   776                     #'hasBorder:' false
       
   777                 )
       
   778                  #(#ActionButtonSpec
       
   779                     #'name:' 'relative B1'
       
   780                     #'layout:' #(#LayoutFrame 117 0 43 0 136 0 61 0)
       
   781                     #'label:' ' '
       
   782                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   783                     #'model:' #makeRelativeLeft
       
   784                     #'isTriggerOnDown:' false
       
   785                     #'autoRepeat:' false
       
   786                 )
       
   787                  #(#ActionButtonSpec
       
   788                     #'name:' 'relative B2'
       
   789                     #'layout:' #(#LayoutFrame 117 0 71 0 136 0 89 0)
       
   790                     #'label:' ' '
       
   791                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   792                     #'model:' #makeRelativeTop
       
   793                     #'isTriggerOnDown:' false
       
   794                     #'autoRepeat:' false
       
   795                 )
       
   796                  #(#ActionButtonSpec
       
   797                     #'name:' 'relative B3'
       
   798                     #'layout:' #(#LayoutFrame 117 0 99 0 136 0 117 0)
       
   799                     #'label:' ' '
       
   800                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   801                     #'model:' #makeRelativeRight
       
   802                     #'isTriggerOnDown:' false
       
   803                     #'autoRepeat:' false
       
   804                 )
       
   805                  #(#ActionButtonSpec
       
   806                     #'name:' 'relative B4'
       
   807                     #'layout:' #(#LayoutFrame 117 0 127 0 136 0 145 0)
       
   808                     #'label:' ' '
       
   809                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   810                     #'model:' #makeRelativeBottom
       
   811                     #'isTriggerOnDown:' false
       
   812                     #'autoRepeat:' false
       
   813                 )
       
   814                  #(#ActionButtonSpec
       
   815                     #'name:' 'relative BAll'
       
   816                     #'layout:' #(#LayoutFrame 117 0 161 0 136 0 179 0)
       
   817                     #'label:' ' '
       
   818                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   819                     #'model:' #makeRelativeAll
       
   820                     #'isTriggerOnDown:' false
       
   821                     #'autoRepeat:' false
       
   822                 )
       
   823                  #(#ActionButtonSpec
       
   824                     #'name:' 'offset B1'
       
   825                     #'layout:' #(#LayoutFrame 214 0 43 0 233 0 61 0)
       
   826                     #'label:' ''
       
   827                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   828                     #'model:' #makeOffsetLeft
       
   829                     #'isTriggerOnDown:' false
       
   830                     #'autoRepeat:' false
       
   831                 )
       
   832                  #(#ActionButtonSpec
       
   833                     #'name:' 'offset B2'
       
   834                     #'layout:' #(#LayoutFrame 214 0 71 0 233 0 89 0)
       
   835                     #'label:' ''
       
   836                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   837                     #'model:' #makeOffsetTop
       
   838                     #'isTriggerOnDown:' false
       
   839                     #'autoRepeat:' false
       
   840                 )
       
   841                  #(#ActionButtonSpec
       
   842                     #'name:' 'offset B3'
       
   843                     #'layout:' #(#LayoutFrame 214 0 99 0 233 0 117 0)
       
   844                     #'label:' ''
       
   845                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   846                     #'model:' #makeOffsetRight
       
   847                     #'isTriggerOnDown:' false
       
   848                     #'autoRepeat:' false
       
   849                 )
       
   850                  #(#ActionButtonSpec
       
   851                     #'name:' 'offset B4'
       
   852                     #'layout:' #(#LayoutFrame 214 0 127 0 233 0 145 0)
       
   853                     #'label:' ''
       
   854                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   855                     #'model:' #makeOffsetBottom
       
   856                     #'isTriggerOnDown:' false
       
   857                     #'autoRepeat:' false
       
   858                 )
       
   859                  #(#ActionButtonSpec
       
   860                     #'name:' 'offset BAll'
       
   861                     #'layout:' #(#LayoutFrame 214 0 161 0 233 0 179 0)
       
   862                     #'label:' ' '
       
   863                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   864                     #'model:' #makeOffsetAll
       
   865                     #'isTriggerOnDown:' false
       
   866                     #'autoRepeat:' false
       
   867                 )
       
   868               )
       
   869           )
       
   870       )
       
   871 
       
   872 !
       
   873 
       
   874 specificationLayoutOrigin
       
   875     "this window spec was automatically generated by the ST/X UIPainter"
       
   876 
       
   877     "do not manually edit this - the painter/builder may not be able to
       
   878      handle the specification if its corrupted."
       
   879 
       
   880     "
       
   881      UIPainter new openOnClass:UIPropertyView::Dimension andSelector:#specificationLayoutOrigin
       
   882      UIPropertyView::Dimension new openInterface:#specificationLayoutOrigin
       
   883     "
       
   884 
       
   885     <resource: #canvas>
       
   886 
       
   887     ^
       
   888 
       
   889        #(#FullSpec
   386           #'window:' 
   890           #'window:' 
   387            #(#WindowSpec
   891            #(#WindowSpec
   388               #'name:' 'uIPainterView'
   892               #'name:' 'uIPainterView'
   389               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   893               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   390               #'label:' 'unnamed'
   894               #'label:' 'unnamed'
   393           #'component:' 
   897           #'component:' 
   394            #(#SpecCollection
   898            #(#SpecCollection
   395               #'collection:' 
   899               #'collection:' 
   396                #(
   900                #(
   397                  #(#LabelSpec
   901                  #(#LabelSpec
   398                     #'name:' 'label0'
   902                     #'name:' 'label1'
   399                     #'layout:' #(#AlignmentOrigin 71 0 7 0 1 0)
   903                     #'layout:' #(#AlignmentOrigin 52 0 44 0 1 0)
   400                     #'label:' 'Layout:'
   904                     #'label:' 'left'
   401                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   905                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   402                     #'initiallyInvisible:' false
       
   403                     #'level:' 0
   906                     #'level:' 0
   404                     #'adjust:' #center
   907                     #'adjust:' #center
   405                     #'hasCharacterOrientedLabel:' true
   908                     #'hasCharacterOrientedLabel:' true
   406                 )
   909                 )
   407                  #(#PopUpListSpec
       
   408                     #'name:' 'popUpList1'
       
   409                     #'layout:' #(#LayoutFrame 74 0.0 7 0 -4 1.0 30 0)
       
   410                     #'label:' 'popup'
       
   411                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   412                     #'initiallyInvisible:' false
       
   413                     #'model:' #layoutType
       
   414                     #'menu:' #layoutTypeList
       
   415                 )
       
   416                  #(#LabelSpec
       
   417                     #'name:' 'label1'
       
   418                     #'layout:' #(#AlignmentOrigin 99 0 62 0 1 0)
       
   419                     #'label:' 'horizontal:'
       
   420                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   421                     #'initiallyInvisible:' false
       
   422                     #'level:' 0
       
   423                     #'adjust:' #left
       
   424                     #'hasCharacterOrientedLabel:' true
       
   425                 )
       
   426                  #(#LabelSpec
   910                  #(#LabelSpec
   427                     #'name:' 'label2'
   911                     #'name:' 'label2'
   428                     #'layout:' #(#AlignmentOrigin 99 0 89 0 1 0)
   912                     #'layout:' #(#AlignmentOrigin 52 0 71 0 1 0)
   429                     #'label:' 'vertical:'
   913                     #'label:' 'top'
   430                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   914                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   431                     #'initiallyInvisible:' false
   915                     #'level:' 0
   432                     #'level:' 0
   916                     #'adjust:' #center
   433                     #'adjust:' #left
   917                     #'hasCharacterOrientedLabel:' true
       
   918                 )
       
   919                  #(#LabelSpec
       
   920                     #'name:' 'label3'
       
   921                     #'layout:' #(#Point 57 12)
       
   922                     #'label:' 'relative'
       
   923                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   924                     #'level:' 0
       
   925                     #'adjust:' #center
       
   926                     #'hasCharacterOrientedLabel:' true
       
   927                 )
       
   928                  #(#LabelSpec
       
   929                     #'name:' 'label4'
       
   930                     #'layout:' #(#Point 154 13)
       
   931                     #'label:' 'offset'
       
   932                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   933                     #'level:' 0
       
   934                     #'adjust:' #center
   434                     #'hasCharacterOrientedLabel:' true
   935                     #'hasCharacterOrientedLabel:' true
   435                 )
   936                 )
   436                  #(#InputFieldSpec
   937                  #(#InputFieldSpec
   437                     #'name:' 'editField1'
   938                     #'name:' 'editField1'
   438                     #'layout:' #(#LayoutFrame 104 0 62 0 197 0 80 0)
   939                     #'layout:' #(#LayoutFrame 57 0 44 0 114 0 62 0)
       
   940                     #'model:' #leftFraction
       
   941                     #'tabable:' true
       
   942                     #'type:' #numberOrNil
       
   943                     #'immediateAccept:' true
       
   944                     #'acceptOnLeave:' true
       
   945                     #'acceptOnReturn:' true
       
   946                     #'acceptOnTab:' true
       
   947                     #'acceptOnLostFocus:' true
       
   948                     #'hasBorder:' false
       
   949                 )
       
   950                  #(#InputFieldSpec
       
   951                     #'name:' 'editField2'
       
   952                     #'layout:' #(#LayoutFrame 57 0 71 0 114 0 89 0)
       
   953                     #'model:' #topFraction
       
   954                     #'tabable:' true
       
   955                     #'type:' #numberOrNil
       
   956                     #'immediateAccept:' true
       
   957                     #'acceptOnLeave:' true
       
   958                     #'acceptOnReturn:' true
       
   959                     #'acceptOnTab:' true
       
   960                     #'acceptOnLostFocus:' true
       
   961                     #'hasBorder:' false
       
   962                 )
       
   963                  #(#InputFieldSpec
       
   964                     #'name:' 'editField3'
       
   965                     #'layout:' #(#LayoutFrame 154 0 44 0 212 0 62 0)
   439                     #'model:' #leftOffset
   966                     #'model:' #leftOffset
   440                     #'tabable:' true
   967                     #'tabable:' true
   441                     #'type:' #numberOrNil
   968                     #'type:' #numberOrNil
   442                     #'immediateAccept:' false
   969                     #'immediateAccept:' true
   443                     #'acceptOnLeave:' true
   970                     #'acceptOnLeave:' true
   444                     #'acceptOnReturn:' true
   971                     #'acceptOnReturn:' true
   445                     #'acceptOnTab:' true
   972                     #'acceptOnTab:' true
   446                     #'acceptOnLostFocus:' true
   973                     #'acceptOnLostFocus:' true
   447                     #'hasBorder:' false
   974                     #'hasBorder:' false
   448                 )
   975                 )
   449                  #(#InputFieldSpec
   976                  #(#InputFieldSpec
   450                     #'name:' 'editField2'
   977                     #'name:' 'editField4'
   451                     #'layout:' #(#LayoutFrame 104 0 89 0 197 0 107 0)
   978                     #'layout:' #(#LayoutFrame 154 0 71 0 212 0 89 0)
   452                     #'model:' #rightOffset
   979                     #'model:' #topOffset
   453                     #'tabable:' true
   980                     #'tabable:' true
   454                     #'type:' #numberOrNil
   981                     #'type:' #numberOrNil
   455                     #'immediateAccept:' false
   982                     #'immediateAccept:' true
   456                     #'acceptOnLeave:' true
   983                     #'acceptOnLeave:' true
   457                     #'acceptOnReturn:' true
   984                     #'acceptOnReturn:' true
   458                     #'acceptOnTab:' true
   985                     #'acceptOnTab:' true
   459                     #'acceptOnLostFocus:' true
   986                     #'acceptOnLostFocus:' true
   460                     #'hasBorder:' false
   987                     #'hasBorder:' false
   461                 )
   988                 )
   462 "/                 #(#LabelSpec
   989                  #(#ActionButtonSpec
   463 "/                    #'name:' 'label0'
   990                     #'name:' 'button1'
   464 "/                    #'layout:' #(#Point 16 15)
   991                     #'layout:' #(#LayoutFrame 119 0 44 0 138 0 62 0)
   465 "/                    #'label:' 'Extent:'
   992                     #'label:' ''
   466 "/                    #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   993                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   467 "/                    #'initiallyInvisible:' false
   994                     #'model:' #makeRelativeLeft
   468 "/                    #'level:' 0
   995                     #'isTriggerOnDown:' false
   469 "/                    #'adjust:' #left
   996                     #'autoRepeat:' false
   470 "/                    #'hasCharacterOrientedLabel:' true
   997                 )
   471 "/                )
   998                  #(#ActionButtonSpec
       
   999                     #'name:' 'button2'
       
  1000                     #'layout:' #(#LayoutFrame 119 0 71 0 138 0 89 0)
       
  1001                     #'label:' ''
       
  1002                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1003                     #'model:' #makeRelativeTop
       
  1004                     #'isTriggerOnDown:' false
       
  1005                     #'autoRepeat:' false
       
  1006                 )
       
  1007                  #(#ActionButtonSpec
       
  1008                     #'name:' 'button3'
       
  1009                     #'layout:' #(#LayoutFrame 216 0 44 0 235 0 62 0)
       
  1010                     #'label:' ''
       
  1011                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1012                     #'model:' #makeOffsetLeft
       
  1013                     #'isTriggerOnDown:' false
       
  1014                     #'autoRepeat:' false
       
  1015                 )
       
  1016                  #(#ActionButtonSpec
       
  1017                     #'name:' 'button4'
       
  1018                     #'layout:' #(#LayoutFrame 216 0 71 0 235 0 89 0)
       
  1019                     #'label:' ''
       
  1020                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1021                     #'model:' #makeOffsetTop
       
  1022                     #'isTriggerOnDown:' false
       
  1023                     #'autoRepeat:' false
       
  1024                 )
       
  1025                  #(#ActionButtonSpec
       
  1026                     #'name:' 'button8'
       
  1027                     #'layout:' #(#LayoutFrame 119 0 103 0 138 0 121 0)
       
  1028                     #'label:' ''
       
  1029                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1030                     #'model:' #makeRelativeLeftTop
       
  1031                     #'isTriggerOnDown:' false
       
  1032                     #'autoRepeat:' false
       
  1033                 )
       
  1034                  #(#ActionButtonSpec
       
  1035                     #'name:' 'button9'
       
  1036                     #'layout:' #(#LayoutFrame 216 0 103 0 235 0 121 0)
       
  1037                     #'label:' ''
       
  1038                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1039                     #'model:' #makeOffsetLeftTop
       
  1040                     #'isTriggerOnDown:' false
       
  1041                     #'autoRepeat:' false
       
  1042                 )
       
  1043                  #(#LabelSpec
       
  1044                     #'name:' 'label5'
       
  1045                     #'layout:' #(#AlignmentOrigin 52 0 103 0 1 0)
       
  1046                     #'label:' 'all'
       
  1047                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1048                     #'level:' 0
       
  1049                     #'adjust:' #center
       
  1050                     #'hasCharacterOrientedLabel:' true
       
  1051                 )
   472               )
  1052               )
   473           )
  1053           )
   474       )
  1054       )
   475 
  1055 
   476     "Modified: 28.3.1997 / 19:46:27 / cg"
  1056 !
   477 !
  1057 
   478 
  1058 specificationPoint
   479 specificationLayoutFrame
       
   480     "this window spec was automatically generated by the ST/X UIPainter"
  1059     "this window spec was automatically generated by the ST/X UIPainter"
   481 
  1060 
   482     "do not manually edit this - the painter/builder may not be able to
  1061     "do not manually edit this - the painter/builder may not be able to
   483      handle the specification if its corrupted."
  1062      handle the specification if its corrupted."
   484 
  1063 
   485     "
  1064     "
   486      UIPainter new openOnClass:UIPropertyView andSelector:#specificationLayoutFrame
  1065      UIPainter new openOnClass:UIPropertyView::Dimension andSelector:#specificationPoint
   487      UIPropertyView new openInterface:#specificationLayoutFrame
  1066      UIPropertyView::Dimension new openInterface:#specificationPoint
   488     "
  1067     "
   489 
  1068 
   490     <resource: #canvas>
  1069     <resource: #canvas>
   491 
  1070 
   492     ^
  1071     ^
   493      
  1072 
   494        #(#FullSpec
  1073        #(#FullSpec
   495           #'name:' 'uIPainterView'
       
   496           #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
   497           #'window:' 
       
   498            #(#WindowSpec
       
   499               #'name:' 'uIPainterView'
       
   500               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
   501               #'label:' 'unnamed'
       
   502               #'bounds:' #(#Rectangle 0 0 238 291)
       
   503           )
       
   504           #'component:' 
       
   505            #(#SpecCollection
       
   506               #'collection:' 
       
   507                #(
       
   508                  #(#LabelSpec
       
   509                     #'name:' 'label0'
       
   510                     #'layout:' #(#AlignmentOrigin 71 0 7 0 1 0)
       
   511                     #'label:' 'Layout:'
       
   512                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   513                     #'initiallyInvisible:' false
       
   514                     #'level:' 0
       
   515                     #'adjust:' #center
       
   516                     #'hasCharacterOrientedLabel:' true
       
   517                 )
       
   518                  #(#PopUpListSpec
       
   519                     #'name:' 'popUpList1'
       
   520                     #'layout:' #(#LayoutFrame 74 0.0 7 0 -4 1.0 30 0)
       
   521                     #'label:' 'popup'
       
   522                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   523                     #'initiallyInvisible:' false
       
   524                     #'model:' #layoutType
       
   525                     #'menu:' #layoutTypeList
       
   526                 )
       
   527                  #(#LabelSpec
       
   528                     #'name:' 'label left'
       
   529                     #'layout:' #(#AlignmentOrigin 60 0 79 0 1 0)
       
   530                     #'label:' 'left'
       
   531                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   532                     #'initiallyInvisible:' false
       
   533                     #'level:' 0
       
   534                     #'adjust:' #center
       
   535                     #'hasCharacterOrientedLabel:' true
       
   536                 )
       
   537                  #(#LabelSpec
       
   538                     #'name:' 'label top'
       
   539                     #'layout:' #(#AlignmentOrigin 60 0 107 0 1 0)
       
   540                     #'label:' 'top'
       
   541                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   542                     #'initiallyInvisible:' false
       
   543                     #'level:' 0
       
   544                     #'adjust:' #center
       
   545                     #'hasCharacterOrientedLabel:' true
       
   546                 )
       
   547                  #(#LabelSpec
       
   548                     #'name:' 'label right'
       
   549                     #'layout:' #(#AlignmentOrigin 60 0 135 0 1 0)
       
   550                     #'label:' 'right'
       
   551                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   552                     #'initiallyInvisible:' false
       
   553                     #'level:' 0
       
   554                     #'adjust:' #center
       
   555                     #'hasCharacterOrientedLabel:' true
       
   556                 )
       
   557                  #(#LabelSpec
       
   558                     #'name:' 'label bottom'
       
   559                     #'layout:' #(#AlignmentOrigin 60 0 163 0 1 0)
       
   560                     #'label:' 'bottom'
       
   561                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   562                     #'initiallyInvisible:' false
       
   563                     #'level:' 0
       
   564                     #'adjust:' #center
       
   565                     #'hasCharacterOrientedLabel:' true
       
   566                 )
       
   567                  #(#LabelSpec
       
   568                     #'name:' 'label relative'
       
   569                     #'layout:' #(#Point 65 50)
       
   570                     #'label:' 'relative'
       
   571                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   572                     #'initiallyInvisible:' false
       
   573                     #'level:' 0
       
   574                     #'adjust:' #center
       
   575                     #'hasCharacterOrientedLabel:' true
       
   576                 )
       
   577                  #(#LabelSpec
       
   578                     #'name:' 'label offset'
       
   579                     #'layout:' #(#Point 159 50)
       
   580                     #'label:' 'offset'
       
   581                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   582                     #'initiallyInvisible:' false
       
   583                     #'level:' 0
       
   584                     #'adjust:' #center
       
   585                     #'hasCharacterOrientedLabel:' true
       
   586                 )
       
   587                  #(#LabelSpec
       
   588                     #'name:' 'label all relative'
       
   589                     #'layout:' #(#AlignmentOrigin 60 0 197 0 1 0)
       
   590                     #'label:' 'all'
       
   591                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   592                     #'initiallyInvisible:' false
       
   593                     #'level:' 0
       
   594                     #'adjust:' #center
       
   595                     #'hasCharacterOrientedLabel:' true
       
   596                 )
       
   597                  #(#InputFieldSpec
       
   598                     #'name:' 'relative E1'
       
   599                     #'layout:' #(#LayoutFrame 65 0 79 0 113 0 97 0)
       
   600                     #'model:' #leftFraction
       
   601                     #'tabable:' false
       
   602                     #'type:' #numberOrNil
       
   603                     #'immediateAccept:' false
       
   604                     #'acceptOnLeave:' true
       
   605                     #'acceptOnReturn:' true
       
   606                     #'acceptOnTab:' true
       
   607                     #'acceptOnLostFocus:' true
       
   608                     #'hasBorder:' false
       
   609                 )
       
   610                  #(#InputFieldSpec
       
   611                     #'name:' 'relative E2'
       
   612                     #'layout:' #(#LayoutFrame 65 0 107 0 113 0 125 0)
       
   613                     #'model:' #topFraction
       
   614                     #'tabable:' false
       
   615                     #'type:' #numberOrNil
       
   616                     #'immediateAccept:' false
       
   617                     #'acceptOnLeave:' true
       
   618                     #'acceptOnReturn:' true
       
   619                     #'acceptOnTab:' true
       
   620                     #'acceptOnLostFocus:' true
       
   621                     #'hasBorder:' false
       
   622                 )
       
   623                  #(#InputFieldSpec
       
   624                     #'name:' 'relative E3'
       
   625                     #'layout:' #(#LayoutFrame 65 0 135 0 113 0 153 0)
       
   626                     #'model:' #rightFraction
       
   627                     #'tabable:' false
       
   628                     #'type:' #numberOrNil
       
   629                     #'immediateAccept:' false
       
   630                     #'acceptOnLeave:' true
       
   631                     #'acceptOnReturn:' true
       
   632                     #'acceptOnTab:' true
       
   633                     #'acceptOnLostFocus:' true
       
   634                     #'hasBorder:' false
       
   635                 )
       
   636                  #(#InputFieldSpec
       
   637                     #'name:' 'relative E4'
       
   638                     #'layout:' #(#LayoutFrame 65 0 163 0 113 0 181 0)
       
   639                     #'model:' #bottomFraction
       
   640                     #'tabable:' false
       
   641                     #'type:' #numberOrNil
       
   642                     #'immediateAccept:' false
       
   643                     #'acceptOnLeave:' true
       
   644                     #'acceptOnReturn:' true
       
   645                     #'acceptOnTab:' true
       
   646                     #'acceptOnLostFocus:' true
       
   647                     #'hasBorder:' false
       
   648                 )
       
   649                  #(#InputFieldSpec
       
   650                     #'name:' 'offset E1'
       
   651                     #'layout:' #(#LayoutFrame 159 0 79 0 210 0 97 0)
       
   652                     #'model:' #leftOffset
       
   653                     #'tabable:' false
       
   654                     #'type:' #numberOrNil
       
   655                     #'immediateAccept:' false
       
   656                     #'acceptOnLeave:' true
       
   657                     #'acceptOnReturn:' true
       
   658                     #'acceptOnTab:' true
       
   659                     #'acceptOnLostFocus:' true
       
   660                     #'hasBorder:' false
       
   661                 )
       
   662                  #(#InputFieldSpec
       
   663                     #'name:' 'offset E2'
       
   664                     #'layout:' #(#LayoutFrame 159 0 107 0 210 0 125 0)
       
   665                     #'model:' #topOffset
       
   666                     #'tabable:' false
       
   667                     #'type:' #numberOrNil
       
   668                     #'immediateAccept:' false
       
   669                     #'acceptOnLeave:' true
       
   670                     #'acceptOnReturn:' true
       
   671                     #'acceptOnTab:' true
       
   672                     #'acceptOnLostFocus:' true
       
   673                     #'hasBorder:' false
       
   674                 )
       
   675                  #(#InputFieldSpec
       
   676                     #'name:' 'offset E3'
       
   677                     #'layout:' #(#LayoutFrame 159 0 135 0 210 0 153 0)
       
   678                     #'model:' #rightOffset
       
   679                     #'tabable:' false
       
   680                     #'type:' #numberOrNil
       
   681                     #'immediateAccept:' false
       
   682                     #'acceptOnLeave:' true
       
   683                     #'acceptOnReturn:' true
       
   684                     #'acceptOnTab:' true
       
   685                     #'acceptOnLostFocus:' true
       
   686                     #'hasBorder:' false
       
   687                 )
       
   688                  #(#InputFieldSpec
       
   689                     #'name:' 'offset E4'
       
   690                     #'layout:' #(#LayoutFrame 159 0 163 0 210 0 181 0)
       
   691                     #'model:' #bottomOffset
       
   692                     #'tabable:' false
       
   693                     #'type:' #numberOrNil
       
   694                     #'immediateAccept:' false
       
   695                     #'acceptOnLeave:' true
       
   696                     #'acceptOnReturn:' true
       
   697                     #'acceptOnTab:' true
       
   698                     #'acceptOnLostFocus:' true
       
   699                     #'hasBorder:' false
       
   700                 )
       
   701                  #(#ActionButtonSpec
       
   702                     #'name:' 'relative B1'
       
   703                     #'layout:' #(#LayoutFrame 117 0 79 0 136 0 97 0)
       
   704                     #'label:' ' '
       
   705                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   706                     #'tabable:' false
       
   707                     #'model:' #makeRelativeLeft
       
   708                 )
       
   709                  #(#ActionButtonSpec
       
   710                     #'name:' 'relative B2'
       
   711                     #'layout:' #(#LayoutFrame 117 0 107 0 136 0 125 0)
       
   712                     #'label:' ' '
       
   713                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   714                     #'tabable:' false
       
   715                     #'model:' #makeRelativeTop
       
   716                 )
       
   717                  #(#ActionButtonSpec
       
   718                     #'name:' 'relative B3'
       
   719                     #'layout:' #(#LayoutFrame 117 0 135 0 136 0 153 0)
       
   720                     #'label:' ' '
       
   721                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   722                     #'tabable:' false
       
   723                     #'model:' #makeRelativeRight
       
   724                 )
       
   725                  #(#ActionButtonSpec
       
   726                     #'name:' 'relative B4'
       
   727                     #'layout:' #(#LayoutFrame 117 0 163 0 136 0 181 0)
       
   728                     #'label:' ' '
       
   729                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   730                     #'tabable:' false
       
   731                     #'model:' #makeRelativeBottom
       
   732                 )
       
   733                  #(#ActionButtonSpec
       
   734                     #'name:' 'relative BAll'
       
   735                     #'layout:' #(#LayoutFrame 117 0 197 0 136 0 215 0)
       
   736                     #'label:' ' '
       
   737                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   738                     #'tabable:' false
       
   739                     #'model:' #makeRelativeAll
       
   740                 )
       
   741                  #(#ActionButtonSpec
       
   742                     #'name:' 'offset B1'
       
   743                     #'layout:' #(#LayoutFrame 214 0 79 0 233 0 97 0)
       
   744                     #'label:' ''
       
   745                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   746                     #'tabable:' false
       
   747                     #'model:' #makeOffsetLeft
       
   748                 )
       
   749                  #(#ActionButtonSpec
       
   750                     #'name:' 'offset B2'
       
   751                     #'layout:' #(#LayoutFrame 214 0 107 0 233 0 125 0)
       
   752                     #'label:' ''
       
   753                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   754                     #'tabable:' false
       
   755                     #'model:' #makeOffsetTop
       
   756                 )
       
   757                  #(#ActionButtonSpec
       
   758                     #'name:' 'offset B3'
       
   759                     #'layout:' #(#LayoutFrame 214 0 135 0 233 0 153 0)
       
   760                     #'label:' ''
       
   761                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   762                     #'tabable:' false
       
   763                     #'model:' #makeOffsetRight
       
   764                 )
       
   765                  #(#ActionButtonSpec
       
   766                     #'name:' 'offset B4'
       
   767                     #'layout:' #(#LayoutFrame 214 0 163 0 233 0 181 0)
       
   768                     #'label:' ''
       
   769                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   770                     #'tabable:' false
       
   771                     #'model:' #makeOffsetBottom
       
   772                 )
       
   773                  #(#ActionButtonSpec
       
   774                     #'name:' 'offset BAll'
       
   775                     #'layout:' #(#LayoutFrame 214 0 197 0 233 0 215 0)
       
   776                     #'label:' ' '
       
   777                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   778                     #'tabable:' false
       
   779                     #'model:' #makeOffsetAll
       
   780                 )
       
   781               )
       
   782           )
       
   783       )
       
   784 
       
   785     "Modified: 28.2.1997 / 13:19:49 / cg"
       
   786 !
       
   787 
       
   788 specificationLayoutOrigin
       
   789     "this window spec was automatically generated by the ST/X UIPainter"
       
   790 
       
   791     "do not manually edit this - the painter/builder may not be able to
       
   792      handle the specification if its corrupted."
       
   793 
       
   794     "
       
   795      UIPainter new openOnClass:UIPropertyView andSelector:#specificationLayoutOrigin
       
   796      UIPropertyView new openInterface:#specificationLayoutOrigin
       
   797     "
       
   798 
       
   799     <resource: #canvas>
       
   800 
       
   801     ^
       
   802      
       
   803        #(#FullSpec
       
   804           #'name:' 'uIPainterView'
       
   805           #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
   806           #'window:' 
  1074           #'window:' 
   807            #(#WindowSpec
  1075            #(#WindowSpec
   808               #'name:' 'uIPainterView'
  1076               #'name:' 'uIPainterView'
   809               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
  1077               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   810               #'label:' 'unnamed'
  1078               #'label:' 'unnamed'
   813           #'component:' 
  1081           #'component:' 
   814            #(#SpecCollection
  1082            #(#SpecCollection
   815               #'collection:' 
  1083               #'collection:' 
   816                #(
  1084                #(
   817                  #(#LabelSpec
  1085                  #(#LabelSpec
   818                     #'name:' 'label0'
  1086                     #'name:' 'label1'
   819                     #'layout:' #(#AlignmentOrigin 71 0 7 0 1 0)
  1087                     #'layout:' #(#AlignmentOrigin 75 0 19 0 1 0)
   820                     #'label:' 'Layout:'
  1088                     #'label:' 'origin x:'
   821                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
  1089                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   822                     #'initiallyInvisible:' false
       
   823                     #'level:' 0
  1090                     #'level:' 0
   824                     #'adjust:' #center
  1091                     #'adjust:' #center
   825                     #'hasCharacterOrientedLabel:' true
  1092                     #'hasCharacterOrientedLabel:' true
   826                 )
  1093                 )
   827                  #(#PopUpListSpec
  1094                  #(#LabelSpec
   828                     #'name:' 'popUpList1'
  1095                     #'name:' 'label2'
   829                     #'layout:' #(#LayoutFrame 75 0.0 9 0 -5 1.0 32 0)
  1096                     #'layout:' #(#AlignmentOrigin 75 0 46 0 1 0)
   830                     #'label:' 'popup'
  1097                     #'label:' 'origin y:'
   831                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
  1098                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
   832                     #'initiallyInvisible:' false
       
   833                     #'model:' #layoutType
       
   834                     #'menu:' #layoutTypeList
       
   835                 )
       
   836                  #(#LabelSpec
       
   837                     #'name:' 'label1'
       
   838                     #'layout:' #(#AlignmentOrigin 52 0 82 0 1 0)
       
   839                     #'label:' 'left'
       
   840                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   841                     #'initiallyInvisible:' false
       
   842                     #'level:' 0
  1099                     #'level:' 0
   843                     #'adjust:' #center
  1100                     #'adjust:' #center
   844                     #'hasCharacterOrientedLabel:' true
  1101                     #'hasCharacterOrientedLabel:' true
   845                 )
  1102                 )
   846                  #(#LabelSpec
       
   847                     #'name:' 'label2'
       
   848                     #'layout:' #(#AlignmentOrigin 52 0 109 0 1 0)
       
   849                     #'label:' 'top'
       
   850                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   851                     #'initiallyInvisible:' false
       
   852                     #'level:' 0
       
   853                     #'adjust:' #center
       
   854                     #'hasCharacterOrientedLabel:' true
       
   855                 )
       
   856                  #(#LabelSpec
       
   857                     #'name:' 'label3'
       
   858                     #'layout:' #(#Point 57 50)
       
   859                     #'label:' 'relative'
       
   860                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   861                     #'initiallyInvisible:' false
       
   862                     #'level:' 0
       
   863                     #'adjust:' #center
       
   864                     #'hasCharacterOrientedLabel:' true
       
   865                 )
       
   866                  #(#LabelSpec
       
   867                     #'name:' 'label4'
       
   868                     #'layout:' #(#Point 154 51)
       
   869                     #'label:' 'offset'
       
   870                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   871                     #'initiallyInvisible:' false
       
   872                     #'level:' 0
       
   873                     #'adjust:' #center
       
   874                     #'hasCharacterOrientedLabel:' true
       
   875                 )
       
   876                  #(#InputFieldSpec
  1103                  #(#InputFieldSpec
   877                     #'name:' 'editField1'
  1104                     #'name:' 'editField1'
   878                     #'layout:' #(#LayoutFrame 57 0 82 0 114 0 100 0)
  1105                     #'layout:' #(#LayoutFrame 77 0 19 0 170 0 37 0)
   879                     #'model:' #leftFraction
  1106                     #'model:' #absLeft
   880                     #'tabable:' true
  1107                     #'tabable:' true
   881                     #'type:' #numberOrNil
  1108                     #'type:' #numberOrNil
   882                     #'immediateAccept:' false
  1109                     #'immediateAccept:' true
   883                     #'acceptOnLeave:' true
  1110                     #'acceptOnLeave:' true
   884                     #'acceptOnReturn:' true
  1111                     #'acceptOnReturn:' true
   885                     #'acceptOnTab:' true
  1112                     #'acceptOnTab:' true
   886                     #'acceptOnLostFocus:' true
  1113                     #'acceptOnLostFocus:' true
   887                     #'hasBorder:' false
  1114                     #'hasBorder:' false
   888                 )
  1115                 )
   889                  #(#InputFieldSpec
  1116                  #(#InputFieldSpec
   890                     #'name:' 'editField2'
  1117                     #'name:' 'editField2'
   891                     #'layout:' #(#LayoutFrame 57 0 109 0 114 0 127 0)
  1118                     #'layout:' #(#LayoutFrame 77 0 46 0 170 0 64 0)
   892                     #'model:' #topFraction
  1119                     #'model:' #absTop
   893                     #'tabable:' true
  1120                     #'tabable:' true
   894                     #'type:' #numberOrNil
  1121                     #'type:' #numberOrNil
   895                     #'immediateAccept:' false
  1122                     #'immediateAccept:' true
   896                     #'acceptOnLeave:' true
  1123                     #'acceptOnLeave:' true
   897                     #'acceptOnReturn:' true
  1124                     #'acceptOnReturn:' true
   898                     #'acceptOnTab:' true
  1125                     #'acceptOnTab:' true
   899                     #'acceptOnLostFocus:' true
  1126                     #'acceptOnLostFocus:' true
   900                     #'hasBorder:' false
  1127                     #'hasBorder:' false
   901                 )
       
   902                  #(#InputFieldSpec
       
   903                     #'name:' 'editField3'
       
   904                     #'layout:' #(#LayoutFrame 154 0 82 0 212 0 100 0)
       
   905                     #'model:' #leftOffset
       
   906                     #'tabable:' true
       
   907                     #'type:' #numberOrNil
       
   908                     #'immediateAccept:' false
       
   909                     #'acceptOnLeave:' true
       
   910                     #'acceptOnReturn:' true
       
   911                     #'acceptOnTab:' true
       
   912                     #'acceptOnLostFocus:' true
       
   913                     #'hasBorder:' false
       
   914                 )
       
   915                  #(#InputFieldSpec
       
   916                     #'name:' 'editField4'
       
   917                     #'layout:' #(#LayoutFrame 154 0 109 0 212 0 127 0)
       
   918                     #'model:' #topOffset
       
   919                     #'tabable:' true
       
   920                     #'type:' #numberOrNil
       
   921                     #'immediateAccept:' false
       
   922                     #'acceptOnLeave:' true
       
   923                     #'acceptOnReturn:' true
       
   924                     #'acceptOnTab:' true
       
   925                     #'acceptOnLostFocus:' true
       
   926                     #'hasBorder:' false
       
   927                 )
       
   928                  #(#ActionButtonSpec
       
   929                     #'name:' 'button1'
       
   930                     #'layout:' #(#LayoutFrame 119 0 82 0 138 0 100 0)
       
   931                     #'label:' ''
       
   932                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   933                     #'tabable:' false
       
   934                     #'model:' #makeRelativeLeft
       
   935                 )
       
   936                  #(#ActionButtonSpec
       
   937                     #'name:' 'button2'
       
   938                     #'layout:' #(#LayoutFrame 119 0 109 0 138 0 127 0)
       
   939                     #'label:' ''
       
   940                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   941                     #'tabable:' false
       
   942                     #'model:' #makeRelativeTop
       
   943                 )
       
   944                  #(#ActionButtonSpec
       
   945                     #'name:' 'button3'
       
   946                     #'layout:' #(#LayoutFrame 216 0 82 0 235 0 100 0)
       
   947                     #'label:' ''
       
   948                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   949                     #'tabable:' false
       
   950                     #'model:' #makeOffsetLeft
       
   951                 )
       
   952                  #(#ActionButtonSpec
       
   953                     #'name:' 'button4'
       
   954                     #'layout:' #(#LayoutFrame 216 0 109 0 235 0 127 0)
       
   955                     #'label:' ''
       
   956                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   957                     #'tabable:' false
       
   958                     #'model:' #makeOffsetTop
       
   959                 )
       
   960                  #(#ActionButtonSpec
       
   961                     #'name:' 'button8'
       
   962                     #'layout:' #(#LayoutFrame 119 0 141 0 138 0 159 0)
       
   963                     #'label:' ''
       
   964                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   965                     #'tabable:' false
       
   966                     #'model:' #makeRelativeLeftTop
       
   967                 )
       
   968                  #(#ActionButtonSpec
       
   969                     #'name:' 'button9'
       
   970                     #'layout:' #(#LayoutFrame 216 0 141 0 235 0 159 0)
       
   971                     #'label:' ''
       
   972                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   973                     #'tabable:' false
       
   974                     #'model:' #makeOffsetLeftTop
       
   975                 )
       
   976                  #(#LabelSpec
       
   977                     #'name:' 'label5'
       
   978                     #'layout:' #(#AlignmentOrigin 52 0 141 0 1 0)
       
   979                     #'label:' 'all'
       
   980                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
   981                     #'initiallyInvisible:' false
       
   982                     #'level:' 0
       
   983                     #'adjust:' #center
       
   984                     #'hasCharacterOrientedLabel:' true
       
   985                 )
  1128                 )
   986               )
  1129               )
   987           )
  1130           )
   988       )
  1131       )
   989 !
  1132 
   990 
  1133 !
   991 specificationPoint
  1134 
       
  1135 specificationRectangle
   992     "this window spec was automatically generated by the ST/X UIPainter"
  1136     "this window spec was automatically generated by the ST/X UIPainter"
   993 
  1137 
   994     "do not manually edit this - the painter/builder may not be able to
  1138     "do not manually edit this - the painter/builder may not be able to
   995      handle the specification if its corrupted."
  1139      handle the specification if its corrupted."
   996 
  1140 
   997     "
  1141     "
   998      UIPainter new openOnClass:UIPropertyView andSelector:#specificationPoint
  1142      UIPainter new openOnClass:UIPropertyView::Dimension andSelector:#specificationRectangle
   999      UIPropertyView new openInterface:#specificationPoint
  1143      UIPropertyView::Dimension new openInterface:#specificationRectangle
  1000     "
  1144     "
  1001 
  1145 
  1002     <resource: #canvas>
  1146     <resource: #canvas>
  1003 
  1147 
  1004     ^
  1148     ^
  1005      
  1149 
  1006        #(#FullSpec
  1150        #(#FullSpec
  1007           #'name:' 'uIPainterView'
       
  1008           #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
  1009           #'window:' 
  1151           #'window:' 
  1010            #(#WindowSpec
  1152            #(#WindowSpec
  1011               #'name:' 'uIPainterView'
  1153               #'name:' 'uIPainterView'
  1012               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
  1154               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
  1013               #'label:' 'unnamed'
  1155               #'label:' 'unnamed'
  1016           #'component:' 
  1158           #'component:' 
  1017            #(#SpecCollection
  1159            #(#SpecCollection
  1018               #'collection:' 
  1160               #'collection:' 
  1019                #(
  1161                #(
  1020                  #(#LabelSpec
  1162                  #(#LabelSpec
  1021                     #'name:' 'label0'
       
  1022                     #'layout:' #(#AlignmentOrigin 84 0 7 0 1 0)
       
  1023                     #'label:' 'Layout:'
       
  1024                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1025                     #'initiallyInvisible:' false
       
  1026                     #'level:' 0
       
  1027                     #'adjust:' #center
       
  1028                     #'hasCharacterOrientedLabel:' true
       
  1029                 )
       
  1030                  #(#PopUpListSpec
       
  1031                     #'name:' 'popUpList1'
       
  1032                     #'layout:' #(#LayoutFrame 93 0.0 7 0 -4 1.0 30 0)
       
  1033                     #'label:' 'popup'
       
  1034                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1035                     #'initiallyInvisible:' false
       
  1036                     #'model:' #layoutType
       
  1037                     #'menu:' #layoutTypeList
       
  1038                 )
       
  1039                  #(#LabelSpec
       
  1040                     #'name:' 'label1'
  1163                     #'name:' 'label1'
  1041                     #'layout:' #(#AlignmentOrigin 75 0 62 0 1 0)
  1164                     #'layout:' #(#AlignmentOrigin 80 0 19 0 1 0)
  1042                     #'label:' 'origin x:'
  1165                     #'label:' 'origin x:'
  1043                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
  1166                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
  1044                     #'initiallyInvisible:' false
  1167                     #'level:' 0
  1045                     #'level:' 0
  1168                     #'adjust:' #left
  1046                     #'adjust:' #center
       
  1047                     #'hasCharacterOrientedLabel:' true
  1169                     #'hasCharacterOrientedLabel:' true
  1048                 )
  1170                 )
  1049                  #(#LabelSpec
  1171                  #(#LabelSpec
  1050                     #'name:' 'label2'
  1172                     #'name:' 'label2'
  1051                     #'layout:' #(#AlignmentOrigin 75 0 89 0 1 0)
  1173                     #'layout:' #(#AlignmentOrigin 80 0 46 0 1 0)
  1052                     #'label:' 'origin y:'
  1174                     #'label:' 'origin y:'
  1053                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
  1175                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
  1054                     #'initiallyInvisible:' false
  1176                     #'level:' 0
  1055                     #'level:' 0
  1177                     #'adjust:' #left
  1056                     #'adjust:' #center
       
  1057                     #'hasCharacterOrientedLabel:' true
  1178                     #'hasCharacterOrientedLabel:' true
  1058                 )
  1179                 )
  1059                  #(#InputFieldSpec
  1180                  #(#InputFieldSpec
  1060                     #'name:' 'editField1'
  1181                     #'name:' 'editField1'
  1061                     #'layout:' #(#LayoutFrame 77 0 62 0 170 0 80 0)
  1182                     #'layout:' #(#LayoutFrame 81 0 19 0 174 0 37 0)
  1062                     #'model:' #absLeft
  1183                     #'model:' #leftOffset
  1063                     #'tabable:' true
  1184                     #'tabable:' true
  1064                     #'type:' #numberOrNil
  1185                     #'type:' #numberOrNil
  1065                     #'immediateAccept:' false
  1186                     #'immediateAccept:' true
  1066                     #'acceptOnLeave:' true
  1187                     #'acceptOnLeave:' true
  1067                     #'acceptOnReturn:' true
  1188                     #'acceptOnReturn:' true
  1068                     #'acceptOnTab:' true
  1189                     #'acceptOnTab:' true
  1069                     #'acceptOnLostFocus:' true
  1190                     #'acceptOnLostFocus:' true
  1070                     #'hasBorder:' false
  1191                     #'hasBorder:' false
  1071                 )
  1192                 )
  1072                  #(#InputFieldSpec
  1193                  #(#InputFieldSpec
  1073                     #'name:' 'editField2'
  1194                     #'name:' 'editField2'
  1074                     #'layout:' #(#LayoutFrame 77 0 89 0 170 0 107 0)
  1195                     #'layout:' #(#LayoutFrame 81 0 46 0 174 0 64 0)
  1075                     #'model:' #absTop
  1196                     #'model:' #topOffset
  1076                     #'tabable:' true
  1197                     #'tabable:' true
  1077                     #'type:' #numberOrNil
  1198                     #'type:' #numberOrNil
  1078                     #'immediateAccept:' false
  1199                     #'immediateAccept:' true
       
  1200                     #'acceptOnLeave:' true
       
  1201                     #'acceptOnReturn:' true
       
  1202                     #'acceptOnTab:' true
       
  1203                     #'acceptOnLostFocus:' true
       
  1204                     #'hasBorder:' false
       
  1205                 )
       
  1206                  #(#LabelSpec
       
  1207                     #'name:' 'label4'
       
  1208                     #'layout:' #(#AlignmentOrigin 80 0 74 0 1 0)
       
  1209                     #'label:' 'corner x:'
       
  1210                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1211                     #'level:' 0
       
  1212                     #'adjust:' #left
       
  1213                     #'hasCharacterOrientedLabel:' true
       
  1214                 )
       
  1215                  #(#LabelSpec
       
  1216                     #'name:' 'label5'
       
  1217                     #'layout:' #(#AlignmentOrigin 80 0 101 0 1 0)
       
  1218                     #'label:' 'corner y:'
       
  1219                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1220                     #'level:' 0
       
  1221                     #'adjust:' #left
       
  1222                     #'hasCharacterOrientedLabel:' true
       
  1223                 )
       
  1224                  #(#InputFieldSpec
       
  1225                     #'name:' 'editField3'
       
  1226                     #'layout:' #(#LayoutFrame 81 0 74 0 174 0 92 0)
       
  1227                     #'model:' #rightOffset
       
  1228                     #'tabable:' true
       
  1229                     #'type:' #numberOrNil
       
  1230                     #'immediateAccept:' true
       
  1231                     #'acceptOnLeave:' true
       
  1232                     #'acceptOnReturn:' true
       
  1233                     #'acceptOnTab:' true
       
  1234                     #'acceptOnLostFocus:' true
       
  1235                     #'hasBorder:' false
       
  1236                 )
       
  1237                  #(#InputFieldSpec
       
  1238                     #'name:' 'editField4'
       
  1239                     #'layout:' #(#LayoutFrame 81 0 101 0 174 0 119 0)
       
  1240                     #'model:' #bottomOffset
       
  1241                     #'tabable:' true
       
  1242                     #'type:' #numberOrNil
       
  1243                     #'immediateAccept:' true
  1079                     #'acceptOnLeave:' true
  1244                     #'acceptOnLeave:' true
  1080                     #'acceptOnReturn:' true
  1245                     #'acceptOnReturn:' true
  1081                     #'acceptOnTab:' true
  1246                     #'acceptOnTab:' true
  1082                     #'acceptOnLostFocus:' true
  1247                     #'acceptOnLostFocus:' true
  1083                     #'hasBorder:' false
  1248                     #'hasBorder:' false
  1084                 )
  1249                 )
  1085               )
  1250               )
  1086           )
  1251           )
  1087       )
  1252       )
  1088 
  1253 
  1089     "Modified: 28.2.1997 / 13:22:31 / cg"
  1254 ! !
  1090 !
  1255 
  1091 
  1256 !UIPropertyView::Dimension methodsFor:'accessing'!
  1092 specificationRectangle
  1257 
  1093     "this window spec was automatically generated by the ST/X UIPainter"
  1258 forView:aView
  1094 
  1259     "set the view the layout derives from
  1095     "do not manually edit this - the painter/builder may not be able to
  1260     "
  1096      handle the specification if its corrupted."
  1261     forView   := aView.
  1097 
  1262     selection := nil.
  1098     "
  1263     self selection:(UIPainterView layoutType:forView)
  1099      UIPainter new openOnClass:UIPropertyView andSelector:#specificationRectangle
  1264 
  1100      UIPropertyView new openInterface:#specificationRectangle
  1265 
  1101     "
  1266 !
  1102 
  1267 
  1103     <resource: #canvas>
  1268 layout
  1104 
  1269     "returns current layout
  1105     ^
  1270     "
  1106      
  1271     |layout|
  1107        #(#FullSpec
  1272 
  1108           #'name:' 'uIPainterView'
  1273     selection notNil ifTrue:[
  1109           #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
  1274         layout := self perform:(('get', selection asString) asSymbol).
  1110           #'window:' 
       
  1111            #(#WindowSpec
       
  1112               #'name:' 'uIPainterView'
       
  1113               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
  1114               #'label:' 'unnamed'
       
  1115               #'bounds:' #(#Rectangle 0 0 238 303)
       
  1116           )
       
  1117           #'component:' 
       
  1118            #(#SpecCollection
       
  1119               #'collection:' 
       
  1120                #(
       
  1121                  #(#LabelSpec
       
  1122                     #'name:' 'label0'
       
  1123                     #'layout:' #(#AlignmentOrigin 90 0 7 0 1 0)
       
  1124                     #'label:' 'Layout:'
       
  1125                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1126                     #'initiallyInvisible:' false
       
  1127                     #'level:' 0
       
  1128                     #'adjust:' #center
       
  1129                     #'hasCharacterOrientedLabel:' true
       
  1130                 )
       
  1131                  #(#PopUpListSpec
       
  1132                     #'name:' 'popUpList1'
       
  1133                     #'layout:' #(#LayoutFrame 95 0.0 7 0 -6 1.0 30 0)
       
  1134                     #'label:' 'popup'
       
  1135                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1136                     #'initiallyInvisible:' false
       
  1137                     #'model:' #layoutType
       
  1138                     #'menu:' #layoutTypeList
       
  1139                 )
       
  1140                  #(#LabelSpec
       
  1141                     #'name:' 'label1'
       
  1142                     #'layout:' #(#AlignmentOrigin 80 0 62 0 1 0)
       
  1143                     #'label:' 'origin x:'
       
  1144                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1145                     #'initiallyInvisible:' false
       
  1146                     #'level:' 0
       
  1147                     #'adjust:' #left
       
  1148                     #'hasCharacterOrientedLabel:' true
       
  1149                 )
       
  1150                  #(#LabelSpec
       
  1151                     #'name:' 'label2'
       
  1152                     #'layout:' #(#AlignmentOrigin 80 0 89 0 1 0)
       
  1153                     #'label:' 'origin y:'
       
  1154                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1155                     #'initiallyInvisible:' false
       
  1156                     #'level:' 0
       
  1157                     #'adjust:' #left
       
  1158                     #'hasCharacterOrientedLabel:' true
       
  1159                 )
       
  1160                  #(#InputFieldSpec
       
  1161                     #'name:' 'editField1'
       
  1162                     #'layout:' #(#LayoutFrame 81 0 62 0 174 0 80 0)
       
  1163                     #'model:' #leftOffset
       
  1164                     #'tabable:' true
       
  1165                     #'type:' #numberOrNil
       
  1166                     #'immediateAccept:' false
       
  1167                     #'acceptOnLeave:' true
       
  1168                     #'acceptOnReturn:' true
       
  1169                     #'acceptOnTab:' true
       
  1170                     #'acceptOnLostFocus:' true
       
  1171                     #'hasBorder:' false
       
  1172                 )
       
  1173                  #(#InputFieldSpec
       
  1174                     #'name:' 'editField2'
       
  1175                     #'layout:' #(#LayoutFrame 81 0 89 0 174 0 107 0)
       
  1176                     #'model:' #topOffset
       
  1177                     #'tabable:' true
       
  1178                     #'type:' #numberOrNil
       
  1179                     #'immediateAccept:' false
       
  1180                     #'acceptOnLeave:' true
       
  1181                     #'acceptOnReturn:' true
       
  1182                     #'acceptOnTab:' true
       
  1183                     #'acceptOnLostFocus:' true
       
  1184                     #'hasBorder:' false
       
  1185                 )
       
  1186                  #(#LabelSpec
       
  1187                     #'name:' 'label4'
       
  1188                     #'layout:' #(#AlignmentOrigin 80 0 117 0 1 0)
       
  1189                     #'label:' 'corner x:'
       
  1190                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1191                     #'initiallyInvisible:' false
       
  1192                     #'level:' 0
       
  1193                     #'adjust:' #left
       
  1194                     #'hasCharacterOrientedLabel:' true
       
  1195                 )
       
  1196                  #(#LabelSpec
       
  1197                     #'name:' 'label5'
       
  1198                     #'layout:' #(#AlignmentOrigin 80 0 144 0 1 0)
       
  1199                     #'label:' 'corner y:'
       
  1200                     #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
       
  1201                     #'initiallyInvisible:' false
       
  1202                     #'level:' 0
       
  1203                     #'adjust:' #left
       
  1204                     #'hasCharacterOrientedLabel:' true
       
  1205                 )
       
  1206                  #(#InputFieldSpec
       
  1207                     #'name:' 'editField3'
       
  1208                     #'layout:' #(#LayoutFrame 81 0 117 0 174 0 135 0)
       
  1209                     #'model:' #rightOffset
       
  1210                     #'tabable:' true
       
  1211                     #'type:' #numberOrNil
       
  1212                     #'immediateAccept:' false
       
  1213                     #'acceptOnLeave:' true
       
  1214                     #'acceptOnReturn:' true
       
  1215                     #'acceptOnTab:' true
       
  1216                     #'acceptOnLostFocus:' true
       
  1217                     #'hasBorder:' false
       
  1218                 )
       
  1219                  #(#InputFieldSpec
       
  1220                     #'name:' 'editField4'
       
  1221                     #'layout:' #(#LayoutFrame 81 0 144 0 174 0 162 0)
       
  1222                     #'model:' #bottomOffset
       
  1223                     #'tabable:' true
       
  1224                     #'type:' #numberOrNil
       
  1225                     #'immediateAccept:' false
       
  1226                     #'acceptOnLeave:' true
       
  1227                     #'acceptOnReturn:' true
       
  1228                     #'acceptOnTab:' true
       
  1229                     #'acceptOnLostFocus:' true
       
  1230                     #'hasBorder:' false
       
  1231                 )
       
  1232               )
       
  1233           )
       
  1234       )
       
  1235 
       
  1236     "Modified: 28.2.1997 / 13:23:57 / cg"
       
  1237 ! !
       
  1238 
       
  1239 !UIPropertyView methodsFor:'event handling'!
       
  1240 
       
  1241 builderViewChanged:what
       
  1242     "something changed in the builder view
       
  1243     "
       
  1244     |slices list prevSpecClass|
       
  1245 
       
  1246     (what == #selection or:[what == #tree]) ifFalse:[
       
  1247         what == #layout ifTrue:[
       
  1248             self updateLayout
       
  1249         ].
       
  1250         ^ self
       
  1251     ].
  1275     ].
  1252     currentView := builderView singleSelection.
  1276     ^ layout
  1253 
  1277 !
  1254     currentView isNil ifTrue:[
  1278 
  1255         propertyAspects := nil.
  1279 layoutType
  1256         specChannel := nil.
  1280     "returns current layoutType
  1257       ^ self propertyList:nil
  1281     "
  1258     ].
  1282     ^ selection
  1259 
  1283 ! !
  1260     prevSpecClass   := specBeingEdited class.
  1284 
  1261     specBeingEdited := builderView specFor:currentView.
  1285 !UIPropertyView::Dimension methodsFor:'accessing hierarchy'!
  1262 
  1286 
  1263     (    (specBeingEdited class == prevSpecClass)
  1287 window
  1264      and:[specChannel notNil]
  1288     ^ noteBook
  1265     ) ifTrue:[
  1289 
  1266         "can keep current specifications plus current property selection
  1290 
  1267         "
  1291 ! !
  1268       ^ self reload.
  1292 
  1269     ].
  1293 !UIPropertyView::Dimension methodsFor:'initialization'!
  1270 
  1294 
  1271     propertyAspects := IdentityDictionary new.
  1295 initialize
  1272     slices          := specBeingEdited class slices.
  1296     "initialize channels
  1273 
  1297     "
  1274     list := slices collect:[:slice|
  1298     |layoutAspects|
  1275         slice first asString
       
  1276     ].
       
  1277     list := list, (Array with:(self class titleOfLayoutMenu)).
       
  1278 
       
  1279     specChannel := specBeingEdited asValue.
       
  1280     specBeingEdited class addBindingsTo:propertyAspects
       
  1281                                     for:specBeingEdited
       
  1282                                 channel:specChannel.
       
  1283     propertyAspects do:[:anAspect | anAspect addDependent:self ].
       
  1284     self propertyList:list.
       
  1285 
       
  1286 
       
  1287 
       
  1288 !
       
  1289 
       
  1290 modified:aState
       
  1291      "change state of modification flag
       
  1292      "
       
  1293      aState ~~ modified ifTrue:[
       
  1294         (modified := aState) ifTrue:[
       
  1295             (builder componentAt:#cancelButton) enable.
       
  1296             (builder componentAt:#applyButton) enable.
       
  1297         ] ifFalse:[
       
  1298             (builder componentAt:#cancelButton) disable.
       
  1299             (builder componentAt:#applyButton) disable.
       
  1300         ].
       
  1301     ]
       
  1302 !
       
  1303 
       
  1304 propertySelectionChanged
       
  1305     "property selection changed; switch to new property selection
       
  1306     "
       
  1307     |plist specClass|
       
  1308 
       
  1309     self modified:false.
       
  1310 
       
  1311     specClass := specBeingEdited class.
       
  1312     plist     := self propertyList.
       
  1313 
       
  1314     (plist selection isNil) ifTrue:[
       
  1315         ^ self showSpec:nil
       
  1316     ].
       
  1317     propertySelection := plist selection.
       
  1318 
       
  1319     specClass slices do:[:slice|
       
  1320         slice first = propertySelection ifTrue:[
       
  1321             ^ self showSpec:(specClass perform:(slice last))
       
  1322         ]
       
  1323     ].
       
  1324     ^ self showAndFetchLayout   "/ layout specifications
       
  1325 !
       
  1326 
       
  1327 update:something with:someArgument from:someone
       
  1328     "any attribute changed its state in the current specification
       
  1329     "
       
  1330     self modified:true
       
  1331 
       
  1332 
       
  1333 ! !
       
  1334 
       
  1335 !UIPropertyView methodsFor:'initialization'!
       
  1336 
       
  1337 in:aTopView builder:aBuilderView
       
  1338     "setup property view in topview and that the builder view
       
  1339     "
       
  1340     |menu y cancelButton applyButton panel propertyFrame propertyList|
       
  1341 
  1299 
  1342     super initialize.
  1300     super initialize.
  1343     self initializeLayoutAspects.
  1301 
  1344 
       
  1345     builderView := aBuilderView.
       
  1346 
       
  1347     menu := PopUpList label:'properties' in:aTopView.
       
  1348     menu defaultLabel:'properties'.
       
  1349     propertyFrame := View in:aTopView.
       
  1350     panel := HorizontalPanelView in:aTopView.
       
  1351     panel horizontalLayout:#fitSpace.
       
  1352 
       
  1353     cancelButton := Button abortButtonIn:panel.
       
  1354     applyButton  := Button okButtonIn:panel.
       
  1355 
       
  1356     propertyList := SelectionInList new.
       
  1357     propertyList list:#( ).
       
  1358     propertyList selectionIndexHolder onChangeSend:#propertySelectionChanged
       
  1359                                                 to:self.
       
  1360     menu model:propertyList.
       
  1361 
       
  1362     y := menu preferredExtent y.
       
  1363     menu  origin:0.0@0.0 corner:1.0@y.
       
  1364     propertyFrame origin:0.0@y   corner:1.0@1.0.
       
  1365     panel origin:0.0@1.0 corner:1.0@1.0.
       
  1366 
       
  1367     y := panel preferredExtent y.
       
  1368     propertyFrame bottomInset:y.
       
  1369     panel topInset:(y negated).
       
  1370 
       
  1371     builder componentAt:#propertyFrame put:propertyFrame.
       
  1372     builder componentAt:#cancelButton  put:cancelButton.
       
  1373     builder componentAt:#applyButton   put:applyButton.
       
  1374     builder componentAt:#propertyList  put:propertyList.
       
  1375 
       
  1376     cancelButton action:[ self cancel ].
       
  1377     applyButton  action:[ self apply ].
       
  1378 
       
  1379     modified := true.
       
  1380     self modified:false.
       
  1381 !
       
  1382 
       
  1383 initializeLayoutAspects
       
  1384     "initialize all layout aspects
       
  1385     "
       
  1386     layoutAspects := IdentityDictionary new.
  1302     layoutAspects := IdentityDictionary new.
  1387 
  1303 
  1388     #(  bottomFraction          bottomOffset
  1304     #(  bottomFraction          bottomOffset
  1389         leftFraction            leftOffset
  1305         leftFraction            leftOffset
  1390         topFraction             topOffset
  1306         topFraction             topOffset
  1391         rightFraction           rightOffset
  1307         rightFraction           rightOffset
  1392         leftAlignmentFraction   topAlignmentFraction
  1308         leftAlignmentFraction   topAlignmentFraction
  1393         absLeft                 absTop               
  1309         absLeft                 absTop               
  1394     )
  1310     )
  1395     do:[:aChannel|
  1311     do:[:aKey|
  1396         layoutAspects at:aChannel put:(ValueHolder new).
  1312         layoutAspects at:aKey put:(ValueHolder new)
  1397     ].
  1313     ].
  1398 
  1314     self aspects:layoutAspects.
  1399     layoutAspects do:[:anAspect | anAspect addDependent:self ].
  1315 
  1400 
  1316 
  1401     layoutAspects at:#layoutType put:(
  1317 !
  1402         AspectAdaptor new
  1318 
  1403                 subject:self;
  1319 origin:anOrigin corner:aCorner in:aTopView
  1404                 accessWith:#layoutType
  1320     "set dimensions
  1405                 assignWith:#layoutType:
  1321     "
  1406     ).
  1322     noteBook := NoteBookView origin:anOrigin corner:aCorner in:aTopView.
  1407 
  1323     window   := noteBook canvas.
  1408     "Modified: 28.2.1997 / 12:57:51 / cg"
  1324 
  1409 ! !
  1325     noteBook direction:#bottom.
  1410 
  1326     noteBook useIndex:true.
  1411 !UIPropertyView methodsFor:'layout'!
  1327     layoutTypes := #( #LayoutFrame #AlignmentOrigin #LayoutOrigin #Point #Rectangle ).     
  1412 
  1328     noteBook list:#( 'Frame' 'Alig.Origin' 'LayoutOrigin' 'Point' 'Rectangle' ).
  1413 layoutType
  1329 
  1414     ^ layoutType
  1330     noteBook action:[:anIndex|
  1415 !
  1331         anIndex notNil ifTrue:[self selection:(layoutTypes at:anIndex)].
  1416 
       
  1417 layoutType:something
       
  1418     |spec|
       
  1419 
       
  1420     layoutType ~~ something ifTrue:[
       
  1421         layoutType := something.
       
  1422 
       
  1423         layoutType notNil ifTrue:[
       
  1424             self modified:true.
       
  1425             self perform:(('fetch',  layoutType asString) asSymbol).
       
  1426             spec := ('specification', layoutType asString) asSymbol.
       
  1427             spec := self class perform:spec.
       
  1428         ].
       
  1429         self showSpec:spec.
       
  1430         self changed:#layoutType.
       
  1431     ].
  1332     ].
  1432 !
  1333 
  1433 
  1334 ! !
  1434 layoutTypeList
  1335 
  1435     ^ #( #LayoutFrame #AlignmentOrigin #LayoutOrigin #Point #Rectangle )
  1336 !UIPropertyView::Dimension methodsFor:'layout access'!
  1436 
  1337 
  1437 !
  1338 getAlignmentOrigin
  1438 
  1339     "returns current layout as alignmentOrigin
  1439 showAndFetchLayout
  1340     "
  1440     "fetch and show layout specification assigned to current view
  1341     |layout|
  1441     "
  1342 
  1442     |type spec|
  1343     layout  := AlignmentOrigin new.
  1443 
  1344 
  1444     self modified:false.
  1345     layout   leftOffset:((aspects at:#leftOffset)   value) ? 0.
  1445     modified := true.
  1346     layout    topOffset:((aspects at:#topOffset)    value) ? 0.
  1446     type     := builderView class layoutType:currentView.
  1347     layout leftFraction:((aspects at:#leftFraction) value) ? 0.
  1447 
  1348     layout  topFraction:((aspects at:#topFraction)  value) ? 0.
  1448     type notNil ifTrue:[
  1349 
  1449         self perform:(('fetch', type asString) asSymbol).
  1350     layout leftAlignmentFraction:((aspects at:#leftAlignmentFraction) value) ? 0.
  1450         spec := self class perform:(('specification', type asString) asSymbol).
  1351     layout  topAlignmentFraction:((aspects at:#topAlignmentFraction)  value) ? 0.
  1451     ].
  1352 
  1452 
  1353   ^ layout
  1453     type ~~ layoutType ifTrue:[
  1354 !
  1454         layoutType := type.
  1355 
  1455         self changed:#layoutType
  1356 getExtent
  1456     ].
  1357     "returns current extent
  1457     self showSpec:spec.
  1358     "
  1458     modified := false.
  1359   ^ Point x:(((aspects at:#leftOffset)   value) ? 0)
  1459 
  1360           y:(((aspects at:#rightOffset)  value) ? 0)
  1460     "Modified: 28.3.1997 / 19:46:32 / cg"
  1361 !
  1461 !
  1362 
  1462 
  1363 getLayoutFrame
  1463 updateLayout
  1364     "returns current layout as layoutFrame
  1464     "layout changed but not selection
  1365     "
  1465     "
  1366     |layout|
  1466     (modified not and:[self isLayoutSpec]) ifTrue:[
  1367 
  1467         (builderView class layoutType:currentView) == layoutType ifTrue:[
  1368     layout  := LayoutFrame new.
  1468             modified := true.
  1369 
  1469             self perform:(('fetch', layoutType asString) asSymbol).
  1370     layout     leftOffset:((aspects at:#leftOffset)     value) ? 0.
  1470             modified := false.
  1371     layout    rightOffset:((aspects at:#rightOffset)    value) ? 0.
  1471         ] ifFalse:[    
  1372     layout      topOffset:((aspects at:#topOffset)      value) ? 0.
  1472             self showAndFetchLayout
  1373     layout   bottomOffset:((aspects at:#bottomOffset)   value) ? 0.
  1473         ]
  1374     layout   leftFraction:((aspects at:#leftFraction)   value) ? 0.
  1474     ]
  1375     layout  rightFraction:((aspects at:#rightFraction)  value) ? 0.
  1475 ! !
  1376     layout    topFraction:((aspects at:#topFraction)    value) ? 0.
  1476 
  1377     layout bottomFraction:((aspects at:#bottomFraction) value) ? 0.
  1477 !UIPropertyView methodsFor:'layout fetch/write'!
  1378 
       
  1379   ^ layout
       
  1380 !
       
  1381 
       
  1382 getLayoutOrigin
       
  1383     "returns current layout as layoutOrigin
       
  1384     "
       
  1385     |layout|
       
  1386 
       
  1387     layout  := LayoutOrigin new.
       
  1388 
       
  1389     layout   leftOffset:((aspects at:#leftOffset)   value) ? 0.
       
  1390     layout    topOffset:((aspects at:#topOffset)    value) ? 0.
       
  1391     layout leftFraction:((aspects at:#leftFraction) value) ? 0.
       
  1392     layout  topFraction:((aspects at:#topFraction)  value) ? 0.
       
  1393 
       
  1394   ^ layout
       
  1395 !
       
  1396 
       
  1397 getPoint
       
  1398     "returns current layout as point
       
  1399     "
       
  1400   ^ Point x:(((aspects at:#absLeft) value) ? 0)
       
  1401           y:(((aspects at:#absTop)  value) ? 0)
       
  1402 !
       
  1403 
       
  1404 getRectangle
       
  1405     "returns current layout as rectangle
       
  1406     "
       
  1407   ^ Rectangle left:(((aspects at:#leftOffset)   value) ? 0)
       
  1408                top:(((aspects at:#topOffset)    value) ? 0)
       
  1409              right:(((aspects at:#rightOffset)  value) ? 0)
       
  1410             bottom:(((aspects at:#bottomOffset) value) ? 0)
       
  1411 ! !
       
  1412 
       
  1413 !UIPropertyView::Dimension methodsFor:'layout fetch'!
  1478 
  1414 
  1479 fetchAlignmentOrigin
  1415 fetchAlignmentOrigin
  1480     "fetch alignmentOrigin
  1416     "fetch alignmentOrigin
  1481     "
  1417     "
  1482     |layout type extent|
  1418     |layout type extent|
  1483 
  1419 
  1484     type   := builderView class layoutType:currentView.
  1420     type    := UIPainterView layoutType:forView.
  1485     layout := currentView geometryLayout.
  1421     layout  := forView geometryLayout.
  1486 
  1422 
  1487     layout isLayout ifTrue:[
  1423     layout isLayout ifTrue:[
  1488         (layoutAspects at:#leftOffset)   value:(layout leftOffset).
  1424         (aspects at:#leftOffset)   value:(layout leftOffset).
  1489         (layoutAspects at:#leftFraction) value:(layout leftFraction).
  1425         (aspects at:#leftFraction) value:(layout leftFraction).
  1490         (layoutAspects at:#topOffset)    value:(layout topOffset).
  1426         (aspects at:#topOffset)    value:(layout topOffset).
  1491         (layoutAspects at:#topFraction)  value:(layout topFraction).
  1427         (aspects at:#topFraction)  value:(layout topFraction).
  1492 
  1428 
  1493         type == #AlignmentOrigin ifTrue:[
  1429         type == #AlignmentOrigin ifTrue:[
  1494             (layoutAspects at:#leftAlignmentFraction) value:(layout leftAlignmentFraction).
  1430             (aspects at:#leftAlignmentFraction) value:(layout leftAlignmentFraction).
  1495             (layoutAspects at:#topAlignmentFraction)  value:(layout topAlignmentFraction).
  1431             (aspects at:#topAlignmentFraction)  value:(layout topAlignmentFraction).
  1496           ^ self
  1432           ^ self
  1497         ]
  1433         ]
  1498     ] ifFalse:[
  1434     ] ifFalse:[
  1499         layout := currentView computeOrigin.
  1435         layout := forView computeOrigin.
  1500 
  1436 
  1501         (layoutAspects at:#leftOffset)   value:(layout x).
  1437         (aspects at:#leftOffset)   value:(layout x).
  1502         (layoutAspects at:#leftFraction) value:0.
  1438         (aspects at:#leftFraction) value:0.
  1503         (layoutAspects at:#topOffset)    value:(layout y).
  1439         (aspects at:#topOffset)    value:(layout y).
  1504         (layoutAspects at:#topFraction)  value:0.
  1440         (aspects at:#topFraction)  value:0.
  1505     ].
  1441     ].
  1506     (layoutAspects at:#leftAlignmentFraction) value:0.
  1442     (aspects at:#leftAlignmentFraction) value:0.
  1507     (layoutAspects at:#topAlignmentFraction)  value:0.
  1443     (aspects at:#topAlignmentFraction)  value:0.
  1508 
       
  1509 
       
  1510 !
  1444 !
  1511 
  1445 
  1512 fetchExtent
  1446 fetchExtent
       
  1447     "fetch extent
       
  1448     "
  1513     |extent|
  1449     |extent|
  1514 
  1450 
  1515     extent := currentView computeExtent.
  1451     extent  := forView computeExtent.
  1516     (layoutAspects at:#leftOffset)  value:(extent x).
  1452 
  1517     (layoutAspects at:#rightOffset) value:(extent y).
  1453     (aspects at:#leftOffset)  value:(extent x).
       
  1454     (aspects at:#rightOffset) value:(extent y).
       
  1455 
  1518 !
  1456 !
  1519 
  1457 
  1520 fetchLayoutFrame
  1458 fetchLayoutFrame
  1521     "fetch layoutFrame
  1459     "fetch layoutFrame
  1522     "
  1460     "
  1523     |layout|
  1461     |layout|
  1524 
  1462 
  1525     layout := builderView class asLayoutFrameFromView:currentView.
  1463     layout  := UIPainterView asLayoutFrameFromView:forView.
  1526 
  1464 
  1527     (layoutAspects at:#leftOffset)     value:(layout leftOffset).
  1465     (aspects at:#leftOffset)     value:(layout leftOffset).
  1528     (layoutAspects at:#leftFraction)   value:(layout leftFraction).
  1466     (aspects at:#leftFraction)   value:(layout leftFraction).
  1529     (layoutAspects at:#topOffset)      value:(layout topOffset).
  1467     (aspects at:#topOffset)      value:(layout topOffset).
  1530     (layoutAspects at:#topFraction)    value:(layout topFraction).
  1468     (aspects at:#topFraction)    value:(layout topFraction).
  1531     (layoutAspects at:#rightOffset)    value:(layout rightOffset).
  1469     (aspects at:#rightOffset)    value:(layout rightOffset).
  1532     (layoutAspects at:#bottomOffset)   value:(layout bottomOffset).
  1470     (aspects at:#bottomOffset)   value:(layout bottomOffset).
  1533     (layoutAspects at:#rightFraction)  value:(layout rightFraction).
  1471     (aspects at:#rightFraction)  value:(layout rightFraction).
  1534     (layoutAspects at:#bottomFraction) value:(layout bottomFraction).
  1472     (aspects at:#bottomFraction) value:(layout bottomFraction).
  1535 !
  1473 !
  1536 
  1474 
  1537 fetchLayoutOrigin
  1475 fetchLayoutOrigin
  1538     "fetch layoutOrigin
  1476     "fetch layoutOrigin
  1539     "
  1477     "
  1540     |layout|
  1478     |layout|
  1541 
  1479 
  1542     layout := builderView class asLayoutFrameFromView:currentView.
  1480     layout  := UIPainterView asLayoutFrameFromView:forView.
  1543 
  1481 
  1544     (layoutAspects at:#leftOffset)   value:(layout leftOffset).
  1482     (aspects at:#leftOffset)   value:(layout leftOffset).
  1545     (layoutAspects at:#leftFraction) value:(layout leftFraction).
  1483     (aspects at:#leftFraction) value:(layout leftFraction).
  1546     (layoutAspects at:#topOffset)    value:(layout topOffset).
  1484     (aspects at:#topOffset)    value:(layout topOffset).
  1547     (layoutAspects at:#topFraction)  value:(layout topFraction).
  1485     (aspects at:#topFraction)  value:(layout topFraction).
  1548 
       
  1549 !
  1486 !
  1550 
  1487 
  1551 fetchPoint
  1488 fetchPoint
  1552     "fetch point
  1489     "fetch point
  1553     "
  1490     "
  1554     |origin|
  1491     |origin|
  1555 
  1492 
  1556     origin := currentView computeOrigin.
  1493     origin  := forView computeOrigin.
  1557     (layoutAspects at:#absLeft) value:(origin x).
  1494 
  1558     (layoutAspects at:#absTop)  value:(origin y).
  1495     (aspects at:#absLeft) value:(origin x).
       
  1496     (aspects at:#absTop)  value:(origin y).
       
  1497 
  1559 !
  1498 !
  1560 
  1499 
  1561 fetchRectangle
  1500 fetchRectangle
  1562     "fetch rectangle
  1501     "fetch rectangle
  1563     "
  1502     "
  1564     |origin corner|
  1503     |origin corner|
  1565 
  1504 
  1566     origin := currentView computeOrigin.
  1505     origin  := forView computeOrigin.
  1567     corner := currentView computeCorner.
  1506     corner  := forView computeCorner.
  1568 
  1507 
  1569     (layoutAspects at:#leftOffset)   value:(origin x).
  1508     (aspects at:#leftOffset)   value:(origin x).
  1570     (layoutAspects at:#rightOffset)  value:(corner x).
  1509     (aspects at:#rightOffset)  value:(corner x).
  1571     (layoutAspects at:#topOffset)    value:(origin y).
  1510     (aspects at:#topOffset)    value:(origin y).
  1572     (layoutAspects at:#bottomOffset) value:(corner y).
  1511     (aspects at:#bottomOffset) value:(corner y).
  1573 !
  1512 
  1574 
  1513 ! !
  1575 writeAlignmentOrigin
  1514 
  1576     "write back as alignmentOrigin
  1515 !UIPropertyView::Dimension methodsFor:'layout make align'!
  1577     "
       
  1578     |layout|
       
  1579 
       
  1580     layout := AlignmentOrigin new.
       
  1581 
       
  1582     layout   leftOffset:((layoutAspects at:#leftOffset)   value) ? 0.
       
  1583     layout    topOffset:((layoutAspects at:#topOffset)    value) ? 0.
       
  1584     layout leftFraction:((layoutAspects at:#leftFraction) value) ? 0.
       
  1585     layout  topFraction:((layoutAspects at:#topFraction)  value) ? 0.
       
  1586 
       
  1587     layout leftAlignmentFraction:((layoutAspects at:#leftAlignmentFraction) value) ? 0.
       
  1588     layout  topAlignmentFraction:((layoutAspects at:#topAlignmentFraction)  value) ? 0.
       
  1589 
       
  1590     builderView setDimension:layout.
       
  1591 !
       
  1592 
       
  1593 writeExtent
       
  1594     |extent|
       
  1595 
       
  1596     extent := Point x:(((layoutAspects at:#leftOffset)   value) ? 0)
       
  1597                     y:(((layoutAspects at:#rightOffset)  value) ? 0).
       
  1598 
       
  1599     builderView setExtent:extent
       
  1600 !
       
  1601 
       
  1602 writeLayoutFrame
       
  1603     "write back as layoutFrame
       
  1604     "
       
  1605     |layout|
       
  1606 
       
  1607     layout := LayoutFrame new.
       
  1608 
       
  1609     layout     leftOffset:((layoutAspects at:#leftOffset)     value) ? 0.
       
  1610     layout    rightOffset:((layoutAspects at:#rightOffset)    value) ? 0.
       
  1611     layout      topOffset:((layoutAspects at:#topOffset)      value) ? 0.
       
  1612     layout   bottomOffset:((layoutAspects at:#bottomOffset)   value) ? 0.
       
  1613     layout   leftFraction:((layoutAspects at:#leftFraction)   value) ? 0.
       
  1614     layout  rightFraction:((layoutAspects at:#rightFraction)  value) ? 0.
       
  1615     layout    topFraction:((layoutAspects at:#topFraction)    value) ? 0.
       
  1616     layout bottomFraction:((layoutAspects at:#bottomFraction) value) ? 0.
       
  1617 
       
  1618     builderView setDimension:layout
       
  1619 !
       
  1620 
       
  1621 writeLayoutOrigin
       
  1622     "write back as layoutOrigin
       
  1623     "
       
  1624     |layout|
       
  1625 
       
  1626     layout := LayoutOrigin new.
       
  1627 
       
  1628     layout   leftOffset:((layoutAspects at:#leftOffset)   value) ? 0.
       
  1629     layout    topOffset:((layoutAspects at:#topOffset)    value) ? 0.
       
  1630     layout leftFraction:((layoutAspects at:#leftFraction) value) ? 0.
       
  1631     layout  topFraction:((layoutAspects at:#topFraction)  value) ? 0.
       
  1632 
       
  1633     builderView setDimension:layout.
       
  1634 
       
  1635 !
       
  1636 
       
  1637 writePoint
       
  1638     "write back as point
       
  1639     "
       
  1640     |point|
       
  1641 
       
  1642 "/    point := Point x:(((layoutAspects at:#leftOffset) value) ? 0)
       
  1643 "/                   y:(((layoutAspects at:#topOffset)  value) ? 0).
       
  1644 
       
  1645     point := Point x:(((layoutAspects at:#absLeft) value) ? 0)
       
  1646                    y:(((layoutAspects at:#absTop)  value) ? 0).
       
  1647 
       
  1648     builderView setDimension:point
       
  1649 
       
  1650     "Modified: 28.2.1997 / 13:00:03 / cg"
       
  1651 !
       
  1652 
       
  1653 writeRectangle
       
  1654     "write back as rectangle
       
  1655     "
       
  1656     |rectangle|
       
  1657 
       
  1658     rectangle := Rectangle left:(((layoutAspects at:#leftOffset)   value) ? 0)
       
  1659                             top:(((layoutAspects at:#topOffset)    value) ? 0)
       
  1660                           right:(((layoutAspects at:#rightOffset)  value) ? 0)
       
  1661                          bottom:(((layoutAspects at:#bottomOffset) value) ? 0).
       
  1662 
       
  1663     builderView setDimension:rectangle
       
  1664 ! !
       
  1665 
       
  1666 !UIPropertyView methodsFor:'layout relative/absolut'!
       
  1667 
  1516 
  1668 makeAlignBottomCenter
  1517 makeAlignBottomCenter
  1669     self makeAlignLeft:0.5 top:1
  1518     self makeAlignLeft:0.5 top:1
  1670 
  1519 
       
  1520 
  1671 !
  1521 !
  1672 
  1522 
  1673 makeAlignBottomLeft
  1523 makeAlignBottomLeft
  1674     self makeAlignLeft:0 top:1
  1524     self makeAlignLeft:0 top:1
  1675 
  1525 
       
  1526 
  1676 !
  1527 !
  1677 
  1528 
  1678 makeAlignBottomRight
  1529 makeAlignBottomRight
  1679     self makeAlignLeft:1 top:1
  1530     self makeAlignLeft:1 top:1
  1680 
  1531 
       
  1532 
  1681 !
  1533 !
  1682 
  1534 
  1683 makeAlignCenter
  1535 makeAlignCenter
  1684     self makeAlignLeft:0.5 top:0.5
  1536     self makeAlignLeft:0.5 top:0.5
  1685 
  1537 
  1686 !
  1538 !
  1687 
  1539 
  1688 makeAlignLeft:leftAlignmentFraction top:topAlignmentFraction
  1540 makeAlignLeft:leftAlignmentFraction top:topAlignmentFraction
  1689     |lAF tAF lO tO ext|
  1541     |lAF tAF lO tO ext|
  1690 
  1542 
  1691     lAF := (layoutAspects at:#leftAlignmentFraction) value ? 0.
  1543     lAF     := (aspects at:#leftAlignmentFraction) value ? 0.
  1692     tAF := (layoutAspects at:#topAlignmentFraction)  value ? 0.
  1544     tAF     := (aspects at:#topAlignmentFraction)  value ? 0.
  1693     ext := currentView computeExtent.
  1545     ext     := forView computeExtent.
  1694 
  1546 
  1695     (layoutAspects at:#leftAlignmentFraction) value:leftAlignmentFraction.
  1547     (aspects at:#leftAlignmentFraction) value:leftAlignmentFraction.
  1696     (layoutAspects at:#topAlignmentFraction)  value:topAlignmentFraction.
  1548     (aspects at:#topAlignmentFraction)  value:topAlignmentFraction.
  1697 
  1549 
  1698     lO := (layoutAspects at:#leftOffset) value ? 0.
  1550     lO := (aspects at:#leftOffset) value ? 0.
  1699     tO := (layoutAspects at:#topOffset)  value ? 0.
  1551     tO := (aspects at:#topOffset)  value ? 0.
  1700 
  1552 
  1701     lO := lO + (ext x * (leftAlignmentFraction - lAF)).
  1553     lO := lO + (ext x * (leftAlignmentFraction - lAF)).
  1702     tO := tO + (ext y * (topAlignmentFraction  - tAF)).
  1554     tO := tO + (ext y * (topAlignmentFraction  - tAF)).
  1703 
  1555 
  1704     (layoutAspects at:#leftOffset) value:(lO rounded).
  1556     (aspects at:#leftOffset) value:(lO rounded).
  1705     (layoutAspects at:#topOffset)  value:(tO rounded).
  1557     (aspects at:#topOffset)  value:(tO rounded).
  1706 !
  1558 !
  1707 
  1559 
  1708 makeAlignLeftCenter
  1560 makeAlignLeftCenter
  1709     self makeAlignLeft:0 top:0.5
  1561     self makeAlignLeft:0 top:0.5
  1710 
  1562 
  1726 !
  1578 !
  1727 
  1579 
  1728 makeAlignTopRight
  1580 makeAlignTopRight
  1729     self makeAlignLeft:1 top:0
  1581     self makeAlignLeft:1 top:0
  1730 
  1582 
  1731 !
  1583 
       
  1584 ! !
       
  1585 
       
  1586 !UIPropertyView::Dimension methodsFor:'layout make relative/absolute'!
  1732 
  1587 
  1733 makeLayout:what xOrY:xOrY offset:aBool
  1588 makeLayout:what xOrY:xOrY offset:aBool
  1734     |extent fraction offset fractSymb offsetSymb|
  1589     |extent fraction offset fractSymb offsetSymb|
  1735 
  1590 
  1736     extent     := (currentView superView computeExtent) perform:xOrY.
  1591     extent     := (forView superView computeExtent) perform:xOrY.
  1737     fractSymb  := (what, 'Fraction') asSymbol.
  1592     fractSymb  := (what, 'Fraction') asSymbol.
  1738     offsetSymb := (what,   'Offset') asSymbol.
  1593     offsetSymb := (what,   'Offset') asSymbol.
  1739 
  1594 
  1740     fraction := (layoutAspects at:fractSymb)  value.
  1595     fraction := (aspects at:fractSymb)  value.
  1741     offset   := (layoutAspects at:offsetSymb) value.
  1596     offset   := (aspects at:offsetSymb) value.
  1742 
  1597 
  1743     aBool ifTrue:[
  1598     aBool ifTrue:[
  1744         offset   := offset + ((fraction * extent) asInteger).
  1599         offset   := offset + ((fraction * extent) asInteger).
  1745         fraction := 0.
  1600         fraction := 0.
  1746     ] ifFalse:[
  1601     ] ifFalse:[
  1748 
  1603 
  1749         (fraction > 1.0) ifTrue:[ fraction := 1.0 ].
  1604         (fraction > 1.0) ifTrue:[ fraction := 1.0 ].
  1750         (fraction < 0.0) ifTrue:[ fraction := 0 ].
  1605         (fraction < 0.0) ifTrue:[ fraction := 0 ].
  1751         offset := 0.
  1606         offset := 0.
  1752     ].
  1607     ].
  1753     (layoutAspects at:offsetSymb) value:offset.
  1608     (aspects at:offsetSymb) value:offset.
  1754     (layoutAspects at:fractSymb)  value:fraction.
  1609     (aspects at:fractSymb)  value:fraction.
  1755 
       
  1756 
       
  1757 !
  1610 !
  1758 
  1611 
  1759 makeOffsetAll
  1612 makeOffsetAll
  1760     self makeOffsetLeft.
  1613     self makeOffsetLeft.
  1761     self makeOffsetTop.
  1614     self makeOffsetTop.
  1762     self makeOffsetRight.
  1615     self makeOffsetRight.
  1763     self makeOffsetBottom.
  1616     self makeOffsetBottom.
  1764 
  1617 
       
  1618 
  1765 !
  1619 !
  1766 
  1620 
  1767 makeOffsetBottom
  1621 makeOffsetBottom
  1768     self makeLayout:'bottom' xOrY:#y offset:true.
  1622     self makeLayout:'bottom' xOrY:#y offset:true.
       
  1623 
  1769 
  1624 
  1770 !
  1625 !
  1771 
  1626 
  1772 makeOffsetLeft
  1627 makeOffsetLeft
  1773     self makeLayout:'left' xOrY:#x offset:true.
  1628     self makeLayout:'left' xOrY:#x offset:true.
  1775 !
  1630 !
  1776 
  1631 
  1777 makeOffsetLeftTop
  1632 makeOffsetLeftTop
  1778     self makeOffsetLeft.
  1633     self makeOffsetLeft.
  1779     self makeOffsetTop.
  1634     self makeOffsetTop.
       
  1635 
  1780 !
  1636 !
  1781 
  1637 
  1782 makeOffsetRight
  1638 makeOffsetRight
  1783     self makeLayout:'right' xOrY:#x offset:true.
  1639     self makeLayout:'right' xOrY:#x offset:true.
  1784 
  1640 
  1793     self makeRelativeLeft.
  1649     self makeRelativeLeft.
  1794     self makeRelativeTop.
  1650     self makeRelativeTop.
  1795     self makeRelativeRight.
  1651     self makeRelativeRight.
  1796     self makeRelativeBottom.
  1652     self makeRelativeBottom.
  1797 
  1653 
       
  1654 
  1798 !
  1655 !
  1799 
  1656 
  1800 makeRelativeBottom
  1657 makeRelativeBottom
  1801     self makeLayout:'bottom' xOrY:#y offset:false.
  1658     self makeLayout:'bottom' xOrY:#y offset:false.
       
  1659 
  1802 
  1660 
  1803 !
  1661 !
  1804 
  1662 
  1805 makeRelativeLeft
  1663 makeRelativeLeft
  1806     self makeLayout:'left' xOrY:#x offset:false.
  1664     self makeLayout:'left' xOrY:#x offset:false.
  1808 !
  1666 !
  1809 
  1667 
  1810 makeRelativeLeftTop
  1668 makeRelativeLeftTop
  1811     self makeRelativeLeft.
  1669     self makeRelativeLeft.
  1812     self makeRelativeTop.
  1670     self makeRelativeTop.
       
  1671 
  1813 !
  1672 !
  1814 
  1673 
  1815 makeRelativeRight
  1674 makeRelativeRight
  1816     self makeLayout:'right' xOrY:#x offset:false.
  1675     self makeLayout:'right' xOrY:#x offset:false.
  1817 
  1676 
  1820 makeRelativeTop
  1679 makeRelativeTop
  1821     self makeLayout:'top' xOrY:#y offset:false.
  1680     self makeLayout:'top' xOrY:#y offset:false.
  1822 
  1681 
  1823 ! !
  1682 ! !
  1824 
  1683 
  1825 !UIPropertyView methodsFor:'private'!
  1684 !UIPropertyView::Dimension methodsFor:'selection'!
  1826 
  1685 
  1827 apply
  1686 selection
  1828     "apply current changes and write back to current view
  1687     ^ selection
  1829     "
  1688 
  1830     modified ifTrue:[
  1689 !
       
  1690 
       
  1691 selection:aLayoutType
       
  1692     |spec idx|
       
  1693 
       
  1694     selection == aLayoutType ifFalse:[
       
  1695         (selection := aLayoutType) notNil ifTrue:[
       
  1696             self perform:(('fetch',   selection asString) asSymbol).
       
  1697             spec := ('specification', selection asString) asSymbol.
       
  1698             spec := self class perform:spec.
       
  1699         ].
       
  1700         self buildFromSpec:spec.
       
  1701     ].
       
  1702     idx := layoutTypes findFirst:[:type| type == aLayoutType ].
       
  1703     noteBook setSelection:idx.
       
  1704 ! !
       
  1705 
       
  1706 !UIPropertyView::Specification methodsFor:'accessing'!
       
  1707 
       
  1708 specEdited
       
  1709     "gets current edit specification
       
  1710     "
       
  1711     ^ specEdited
       
  1712 
       
  1713 
       
  1714 !
       
  1715 
       
  1716 specEdited:aSpec
       
  1717     "sets current edit specification
       
  1718     "
       
  1719     |aspects|
       
  1720 
       
  1721     self modified:false.
       
  1722 
       
  1723     aSpec isNil ifTrue:[
       
  1724         specChannel := nil.
       
  1725         specEdited  := nil.
       
  1726     ] ifFalse:[
       
  1727         specEdited class == aSpec class ifTrue:[
       
  1728             specEdited := aSpec.
       
  1729             specChannel value:specEdited.
       
  1730           ^ self modified:false.
       
  1731         ].
       
  1732         specEdited  := aSpec.
       
  1733         aspects     := IdentityDictionary new.
       
  1734         specChannel := specEdited asValue.
       
  1735         specEdited class addBindingsTo:aspects for:specEdited channel:specChannel
       
  1736     ].
       
  1737     self aspects:aspects.
       
  1738     self buildFromSpec:nil.
       
  1739 
       
  1740 
       
  1741 ! !
       
  1742 
       
  1743 !UIPropertyView::Specification methodsFor:'action'!
       
  1744 
       
  1745 reload
       
  1746     "reload specification
       
  1747     "
       
  1748     specChannel notNil ifTrue:[
       
  1749         specChannel value:specEdited.
  1831         self modified:false.
  1750         self modified:false.
  1832 
       
  1833         self isSingleSelection ifTrue:[
       
  1834             self isLayoutSpec ifFalse:[
       
  1835                 builderView updateFromSpec:specBeingEdited
       
  1836             ] ifTrue:[
       
  1837                 layoutType notNil ifTrue:[
       
  1838                     self perform:(('write', layoutType asString) asSymbol)
       
  1839                 ]
       
  1840             ]
       
  1841         ]
       
  1842     ]
  1751     ]
  1843 
  1752 
  1844 !
  1753 
  1845 
       
  1846 aspectFor:aKey
       
  1847     "returns aspect for a key
       
  1848     "
       
  1849     |aspect|
       
  1850 
       
  1851     propertyAspects notNil ifTrue:[
       
  1852         aspect := propertyAspects at:aKey ifAbsent:nil.
       
  1853         aspect notNil ifTrue:[
       
  1854             ^ aspect
       
  1855         ]
       
  1856     ].
       
  1857 
       
  1858     ^ layoutAspects at:aKey ifAbsent:[super aspectFor:aKey]
       
  1859 !
       
  1860 
       
  1861 cancel
       
  1862     "cancel all changes and read back attributes from current view
       
  1863     "
       
  1864     modified ifTrue:[
       
  1865         specBeingEdited := builderView specFor:currentView.
       
  1866         self reload
       
  1867     ].
       
  1868 !
       
  1869 
       
  1870 propertyList
       
  1871     "returns property list
       
  1872     "
       
  1873     ^ builder componentAt:#propertyList
       
  1874 !
       
  1875 
       
  1876 propertyList:aList
       
  1877     "property list changed
       
  1878     "
       
  1879     |sel list plist|
       
  1880 
       
  1881     aList notNil ifTrue:[
       
  1882         sel  := propertySelection.
       
  1883         list := aList
       
  1884     ] ifFalse:[
       
  1885         list := #()
       
  1886     ].
       
  1887 
       
  1888     plist := self propertyList.
       
  1889     plist list:list.
       
  1890     plist selection:sel.
       
  1891     self modified:false.
       
  1892 
       
  1893 !
       
  1894 
       
  1895 reload
       
  1896     "relaod all attributes from current specification and update values
       
  1897     "
       
  1898     self modified:false.
       
  1899 
       
  1900     self isSingleSelection ifTrue:[
       
  1901         modified := true.                               "/ disable notifications"
       
  1902         specChannel value:specBeingEdited.
       
  1903 
       
  1904         self isLayoutSpec ifTrue:[
       
  1905             self showAndFetchLayout.
       
  1906         ].
       
  1907         modified := false.                              "/ enable notifications
       
  1908     ].
       
  1909 
       
  1910 !
       
  1911 
       
  1912 showSpec:aSpec
       
  1913     "switch to specification
       
  1914     "
       
  1915     |frame|
       
  1916 
       
  1917     shownSpec ~= aSpec ifTrue:[
       
  1918         frame := builder componentAt:#propertyFrame.
       
  1919         frame destroySubViews.
       
  1920 
       
  1921         aSpec notNil ifTrue:[
       
  1922             builder buildFromSpec:aSpec in:frame.
       
  1923             frame realizeAllSubViews
       
  1924         ]
       
  1925     ].
       
  1926     shownSpec := aSpec.
       
  1927 ! !
       
  1928 
       
  1929 !UIPropertyView methodsFor:'queries'!
       
  1930 
       
  1931 isLayoutSpec
       
  1932     "returns true if current menu is a layout specification
       
  1933     "
       
  1934     |selection|
       
  1935 
       
  1936     self isSingleSelection ifTrue:[
       
  1937         ^ propertySelection == self class titleOfLayoutMenu
       
  1938     ].
       
  1939     ^ false
       
  1940 !
       
  1941 
       
  1942 isMultiSelection
       
  1943     "returns true in case of a multiple selection
       
  1944     "
       
  1945     ^ (currentView isNil and:[builderView numberOfSelections > 1])
       
  1946 !
       
  1947 
       
  1948 isSingleSelection
       
  1949     "returns true in case of a single selection
       
  1950     "
       
  1951     ^ currentView notNil
       
  1952 ! !
  1754 ! !
  1953 
  1755 
  1954 !UIPropertyView class methodsFor:'documentation'!
  1756 !UIPropertyView class methodsFor:'documentation'!
  1955 
  1757 
  1956 version
  1758 version
  1957     ^ '$Header$'
  1759     ^ '$Header$'
  1958 ! !
  1760 
       
  1761 
       
  1762 ! !