support of writeSelector
authorca
Wed, 12 Nov 1997 17:26:53 +0100
changeset 379 1a24037cd490
parent 378 9057ea063eca
child 380 42aacfc3d263
support of writeSelector
DataSetBuilder.st
--- a/DataSetBuilder.st	Fri Nov 07 14:30:55 1997 +0100
+++ b/DataSetBuilder.st	Wed Nov 12 17:26:53 1997 +0100
@@ -538,7 +538,7 @@
                #(
                  #(#FramedBoxSpec
                     #'name:' 'valuesBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 20 0 0 1.0 101 0)
+                    #'layout:' #(#LayoutFrame 0 0.0 20 0 0 1.0 125 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
@@ -557,20 +557,34 @@
                               #'model:' #readSelector
                               #'type:' #symbolOrNil
                           )
+                           #(#InputFieldSpec
+                              #'name:' 'writeSelector'
+                              #'layout:' #(#LayoutFrame 86 0 38 0 17 1.0 58 0)
+                              #'activeHelpKey:' #writeSelector
+                              #'model:' #writeSelector
+                              #'type:' #symbolOrNil
+                          )
                            #(#LabelSpec
                               #'name:' 'printLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 51 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 84 0 78 0 1 0.5)
                               #'label:' 'Print:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#InputFieldSpec
                               #'name:' 'printSelector'
-                              #'layout:' #(#LayoutFrame 86 0 42 0 17 1.0 62 0)
+                              #'layout:' #(#LayoutFrame 86 0 69 0 17 1.0 89 0)
                               #'activeHelpKey:' #printSelector
                               #'model:' #printSelector
                               #'type:' #symbolOrNil
                           )
+                           #(#LabelSpec
+                              #'name:' 'writeLabel'
+                              #'layout:' #(#AlignmentOrigin 84 0 48 0 1 0.5)
+                              #'label:' 'Write:'
+                              #'adjust:' #right
+                              #'resizeForLabel:' true
+                          )
                         )
                     )
                     #'label:' 'Values:'
@@ -578,7 +592,7 @@
                 )
                  #(#FramedBoxSpec
                     #'name:' 'menusBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 115 0 0 1.0 195 0)
+                    #'layout:' #(#LayoutFrame 0 0.0 137 0 0 1.0 217 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
@@ -1357,7 +1371,7 @@
     type := (aspects at:#rendererType) value.
 
     type == #rowSelector ifTrue:[
-        #( label width minWidth editorType choices readSelector printSelector
+        #( label width minWidth editorType choices readSelector writeSelector printSelector
            formatString type size height canSelect selectSelector
          ) do:[:aKey| (aspects at:aKey) value:nil ].
     ].
@@ -1624,7 +1638,11 @@
          and:[(aClass implements:sel) not]]
         ) ifTrue:[
             (aColumn printSelector isNil or:[aColumn canSelect]) ifTrue:[
-                bCode := sel asString, code.
+                sel numArgs == 0 ifTrue:[
+                    bCode := sel asString, code
+                ] ifFalse:[
+                    bCode := sel asString, 'anIndex\', code
+                ].
                 aColumn rendererType == #CheckToggle ifFalse:[
                     bCode := bCode, '    ^ nil'
                 ] ifTrue:[
@@ -1665,7 +1683,7 @@
 generateWriteSelectorIn:aClass
     "generate code for #writeSelector
     "
-    |sel catg code|
+    |sel catg code bCode sz|
 
     catg := 'accessing writeSelector' asSymbol.
     code :=   'aValue\'
@@ -1675,10 +1693,18 @@
             .
 
     columns do:[:aColumn|
-        (     (sel := aColumn writeSelector) notNil 
-         and:[(aClass implements:sel) not]
+        (    (sel := aColumn writeSelector) notNil
+         and:[(aColumn canSelect)
+         and:[(aClass implements:sel) not]]
         ) ifTrue:[
-            self compile:(sel asString, code) forClass:aClass inCategory:catg
+            sel numArgs == 1 ifTrue:[
+                bCode := sel asString
+            ] ifFalse:[
+                sz := sel indexOf:$:.
+                bCode := sel copyTo:sz.
+                bCode := bCode, 'anIndex ', (sel copyFrom:(sz + 1)).
+            ].
+            self compile:(bCode, code) forClass:aClass inCategory:catg
         ]
     ]
 ! !
@@ -1714,6 +1740,7 @@
         selectSelector
         printSelector
         readSelector
+        writeSelector
         rendererType
         showColSeparator
         showRowSeparator