DataSetBuilder.st
changeset 379 1a24037cd490
parent 377 5cbb117efc19
child 380 42aacfc3d263
equal deleted inserted replaced
378:9057ea063eca 379:1a24037cd490
   536            #(#SpecCollection
   536            #(#SpecCollection
   537               #'collection:' 
   537               #'collection:' 
   538                #(
   538                #(
   539                  #(#FramedBoxSpec
   539                  #(#FramedBoxSpec
   540                     #'name:' 'valuesBox'
   540                     #'name:' 'valuesBox'
   541                     #'layout:' #(#LayoutFrame 0 0.0 20 0 0 1.0 101 0)
   541                     #'layout:' #(#LayoutFrame 0 0.0 20 0 0 1.0 125 0)
   542                     #'component:' 
   542                     #'component:' 
   543                      #(#SpecCollection
   543                      #(#SpecCollection
   544                         #'collection:' 
   544                         #'collection:' 
   545                          #(
   545                          #(
   546                            #(#LabelSpec
   546                            #(#LabelSpec
   555                               #'layout:' #(#LayoutFrame 86 0 16 0 17 1.0 36 0)
   555                               #'layout:' #(#LayoutFrame 86 0 16 0 17 1.0 36 0)
   556                               #'activeHelpKey:' #readSelector
   556                               #'activeHelpKey:' #readSelector
   557                               #'model:' #readSelector
   557                               #'model:' #readSelector
   558                               #'type:' #symbolOrNil
   558                               #'type:' #symbolOrNil
   559                           )
   559                           )
       
   560                            #(#InputFieldSpec
       
   561                               #'name:' 'writeSelector'
       
   562                               #'layout:' #(#LayoutFrame 86 0 38 0 17 1.0 58 0)
       
   563                               #'activeHelpKey:' #writeSelector
       
   564                               #'model:' #writeSelector
       
   565                               #'type:' #symbolOrNil
       
   566                           )
   560                            #(#LabelSpec
   567                            #(#LabelSpec
   561                               #'name:' 'printLabel'
   568                               #'name:' 'printLabel'
   562                               #'layout:' #(#AlignmentOrigin 84 0 51 0 1 0.5)
   569                               #'layout:' #(#AlignmentOrigin 84 0 78 0 1 0.5)
   563                               #'label:' 'Print:'
   570                               #'label:' 'Print:'
   564                               #'adjust:' #right
   571                               #'adjust:' #right
   565                               #'resizeForLabel:' true
   572                               #'resizeForLabel:' true
   566                           )
   573                           )
   567                            #(#InputFieldSpec
   574                            #(#InputFieldSpec
   568                               #'name:' 'printSelector'
   575                               #'name:' 'printSelector'
   569                               #'layout:' #(#LayoutFrame 86 0 42 0 17 1.0 62 0)
   576                               #'layout:' #(#LayoutFrame 86 0 69 0 17 1.0 89 0)
   570                               #'activeHelpKey:' #printSelector
   577                               #'activeHelpKey:' #printSelector
   571                               #'model:' #printSelector
   578                               #'model:' #printSelector
   572                               #'type:' #symbolOrNil
   579                               #'type:' #symbolOrNil
       
   580                           )
       
   581                            #(#LabelSpec
       
   582                               #'name:' 'writeLabel'
       
   583                               #'layout:' #(#AlignmentOrigin 84 0 48 0 1 0.5)
       
   584                               #'label:' 'Write:'
       
   585                               #'adjust:' #right
       
   586                               #'resizeForLabel:' true
   573                           )
   587                           )
   574                         )
   588                         )
   575                     )
   589                     )
   576                     #'label:' 'Values:'
   590                     #'label:' 'Values:'
   577                     #'labelPosition:' #topLeft
   591                     #'labelPosition:' #topLeft
   578                 )
   592                 )
   579                  #(#FramedBoxSpec
   593                  #(#FramedBoxSpec
   580                     #'name:' 'menusBox'
   594                     #'name:' 'menusBox'
   581                     #'layout:' #(#LayoutFrame 0 0.0 115 0 0 1.0 195 0)
   595                     #'layout:' #(#LayoutFrame 0 0.0 137 0 0 1.0 217 0)
   582                     #'component:' 
   596                     #'component:' 
   583                      #(#SpecCollection
   597                      #(#SpecCollection
   584                         #'collection:' 
   598                         #'collection:' 
   585                          #(
   599                          #(
   586                            #(#LabelSpec
   600                            #(#LabelSpec
  1355     ].
  1369     ].
  1356 
  1370 
  1357     type := (aspects at:#rendererType) value.
  1371     type := (aspects at:#rendererType) value.
  1358 
  1372 
  1359     type == #rowSelector ifTrue:[
  1373     type == #rowSelector ifTrue:[
  1360         #( label width minWidth editorType choices readSelector printSelector
  1374         #( label width minWidth editorType choices readSelector writeSelector printSelector
  1361            formatString type size height canSelect selectSelector
  1375            formatString type size height canSelect selectSelector
  1362          ) do:[:aKey| (aspects at:aKey) value:nil ].
  1376          ) do:[:aKey| (aspects at:aKey) value:nil ].
  1363     ].
  1377     ].
  1364         
  1378         
  1365     aspects keysAndValuesDo:[:aKey :aModel|
  1379     aspects keysAndValuesDo:[:aKey :aModel|
  1622         (     aColumn rendererType ~~ #rowSelector 
  1636         (     aColumn rendererType ~~ #rowSelector 
  1623          and:[(sel := aColumn readSelector) notNil
  1637          and:[(sel := aColumn readSelector) notNil
  1624          and:[(aClass implements:sel) not]]
  1638          and:[(aClass implements:sel) not]]
  1625         ) ifTrue:[
  1639         ) ifTrue:[
  1626             (aColumn printSelector isNil or:[aColumn canSelect]) ifTrue:[
  1640             (aColumn printSelector isNil or:[aColumn canSelect]) ifTrue:[
  1627                 bCode := sel asString, code.
  1641                 sel numArgs == 0 ifTrue:[
       
  1642                     bCode := sel asString, code
       
  1643                 ] ifFalse:[
       
  1644                     bCode := sel asString, 'anIndex\', code
       
  1645                 ].
  1628                 aColumn rendererType == #CheckToggle ifFalse:[
  1646                 aColumn rendererType == #CheckToggle ifFalse:[
  1629                     bCode := bCode, '    ^ nil'
  1647                     bCode := bCode, '    ^ nil'
  1630                 ] ifTrue:[
  1648                 ] ifTrue:[
  1631                     bCode := bCode, '    ^ true'
  1649                     bCode := bCode, '    ^ true'
  1632                 ]. 
  1650                 ]. 
  1663 !
  1681 !
  1664 
  1682 
  1665 generateWriteSelectorIn:aClass
  1683 generateWriteSelectorIn:aClass
  1666     "generate code for #writeSelector
  1684     "generate code for #writeSelector
  1667     "
  1685     "
  1668     |sel catg code|
  1686     |sel catg code bCode sz|
  1669 
  1687 
  1670     catg := 'accessing writeSelector' asSymbol.
  1688     catg := 'accessing writeSelector' asSymbol.
  1671     code :=   'aValue\'
  1689     code :=   'aValue\'
  1672             , '    "automatically generated by DataSetBuilder ..."\'
  1690             , '    "automatically generated by DataSetBuilder ..."\'
  1673             , '\'
  1691             , '\'
  1674             , '    "set value"\'
  1692             , '    "set value"\'
  1675             .
  1693             .
  1676 
  1694 
  1677     columns do:[:aColumn|
  1695     columns do:[:aColumn|
  1678         (     (sel := aColumn writeSelector) notNil 
  1696         (    (sel := aColumn writeSelector) notNil
  1679          and:[(aClass implements:sel) not]
  1697          and:[(aColumn canSelect)
       
  1698          and:[(aClass implements:sel) not]]
  1680         ) ifTrue:[
  1699         ) ifTrue:[
  1681             self compile:(sel asString, code) forClass:aClass inCategory:catg
  1700             sel numArgs == 1 ifTrue:[
       
  1701                 bCode := sel asString
       
  1702             ] ifFalse:[
       
  1703                 sz := sel indexOf:$:.
       
  1704                 bCode := sel copyTo:sz.
       
  1705                 bCode := bCode, 'anIndex ', (sel copyFrom:(sz + 1)).
       
  1706             ].
       
  1707             self compile:(bCode, code) forClass:aClass inCategory:catg
  1682         ]
  1708         ]
  1683     ]
  1709     ]
  1684 ! !
  1710 ! !
  1685 
  1711 
  1686 !DataSetBuilder methodsFor:'initialization'!
  1712 !DataSetBuilder methodsFor:'initialization'!
  1712         height
  1738         height
  1713         menu
  1739         menu
  1714         selectSelector
  1740         selectSelector
  1715         printSelector
  1741         printSelector
  1716         readSelector
  1742         readSelector
       
  1743         writeSelector
  1717         rendererType
  1744         rendererType
  1718         showColSeparator
  1745         showColSeparator
  1719         showRowSeparator
  1746         showRowSeparator
  1720         backgroundColor
  1747         backgroundColor
  1721         foregroundColor
  1748         foregroundColor