totally revised version
authortz
Fri, 16 Jan 1998 15:10:41 +0100
changeset 408 9215eb553600
parent 407 578a7aaed19e
child 409 6fbb954fdd75
totally revised version
DataSetBuilder.st
--- a/DataSetBuilder.st	Fri Jan 16 15:03:04 1998 +0100
+++ b/DataSetBuilder.st	Fri Jan 16 15:10:41 1998 +0100
@@ -14,7 +14,7 @@
 
 
 
-ApplicationModel subclass:#DataSetBuilder
+ToolApplicationModel subclass:#DataSetBuilder
 	instanceVariableNames:'className superclassName hasChanged columnView columns
 		selectedColumnIndex tabSelectionIndex aspects isModified'
 	classVariableNames:'Number'
@@ -79,46 +79,64 @@
           #'window:' 
            #(#WindowSpec
               #'name:' 'DataSet Basic'
-              #'layout:' #(#LayoutFrame 219 0 193 0 507 0 448 0)
+              #'layout:' #(#LayoutFrame 100 0 173 0 388 0 428 0)
               #'label:' 'DataSet Basic'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 219 193 508 449)
+              #'bounds:' #(#Rectangle 100 173 389 429)
               #'usePreferredExtent:' false
           )
           #'component:' 
            #(#SpecCollection
               #'collection:' 
                #(
-                 #(#LabelSpec
-                    #'name:' 'labelLabel'
-                    #'layout:' #(#AlignmentOrigin 70 0 30 0 1 0.5)
-                    #'label:' 'Label:'
-                    #'adjust:' #right
-                    #'resizeForLabel:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'labelField'
-                    #'layout:' #(#LayoutFrame 74 0 22 0 -12 1.0 40 0)
-                    #'activeHelpKey:' #label
-                    #'model:' #label
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox1'
+                    #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 92 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#LabelSpec
+                              #'name:' 'label1'
+                              #'layout:' #(#AlignmentOrigin 107 0 31 0 1 0.5)
+                              #'label:' 'Label:'
+                              #'resizeForLabel:' true
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'labelField'
+                              #'layout:' #(#LayoutFrame 110 0 21 0 15 1.0 43 0)
+                              #'activeHelpKey:' #label
+                              #'model:' #label
+                          )
+                           #(#CheckBoxSpec
+                              #'name:' 'labelIsImage'
+                              #'layout:' #(#LayoutOrigin 107 0 47 0)
+                              #'activeHelpKey:' #labelIsImage
+                              #'model:' #labelIsImage
+                              #'label:' 'Label Is Image'
+                          )
+                        )
+                    )
+                    #'label:' 'Header:'
+                    #'labelPosition:' #topLeft
                 )
                  #(#FramedBoxSpec
                     #'name:' 'typesFrame'
-                    #'layout:' #(#LayoutFrame 8 0.0 69 0 0 1.0 149 0)
+                    #'layout:' #(#LayoutFrame 0 0.0 92 0 0 1.0 174 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
                          #(
                            #(#LabelSpec
                               #'name:' 'rendererLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 26 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 107 0 28 0 1 0.5)
                               #'label:' 'Renderer:'
                               #'resizeForLabel:' true
                           )
                            #(#ComboListSpec
                               #'name:' 'rendererField'
-                              #'layout:' #(#LayoutFrame 86 0 16 0 17 1.0 36 0)
+                              #'layout:' #(#LayoutFrame 110 0 18 0 15 1.0 40 0)
                               #'activeHelpKey:' #rendererType
                               #'model:' #rendererType
                               #'comboList:' #rendererTypeList
@@ -126,13 +144,13 @@
                           )
                            #(#LabelSpec
                               #'name:' 'editorLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 50 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 107 0 53 0 1 0.5)
                               #'label:' 'Editor:'
                               #'resizeForLabel:' true
                           )
                            #(#ComboBoxSpec
                               #'name:' 'editorField'
-                              #'layout:' #(#LayoutFrame 86 0 41 0 17 1.0 61 0)
+                              #'layout:' #(#LayoutFrame 110 0 44 0 15 1.0 66 0)
                               #'activeHelpKey:' #editorField
                               #'model:' #editorType
                               #'type:' #symbolOrNil
@@ -141,127 +159,7 @@
                           )
                         )
                     )
-                    #'label:' 'Types:'
-                    #'labelPosition:' #topLeft
-                )
-                 #(#CheckBoxSpec
-                    #'name:' 'labelIsImage'
-                    #'layout:' #(#LayoutOrigin 9 0 189 0)
-                    #'activeHelpKey:' #labelIsImage
-                    #'model:' #labelIsImage
-                    #'label:' 'Label Is Image'
-                )
-              )
-          )
-      )
-!
-
-cellEditSpec
-    "this window spec was automatically generated by the ST/X UIPainter"
-
-    "do not manually edit this - the painter/builder may not be able to
-     handle the specification if its corrupted."
-
-    "
-     UIPainter new openOnClass:DataSetBuilder andSelector:#cellEditSpec
-     DataSetBuilder new openInterface:#cellEditSpec
-    "
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'name:' 'DataSet Misc'
-              #'layout:' #(#LayoutFrame 219 0 193 0 496 0 423 0)
-              #'label:' 'DataSet Misc'
-              #'min:' #(#Point 10 10)
-              #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 219 193 497 424)
-              #'usePreferredExtent:' false
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'name:' 'defaultColorsBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 22 0 0 1.0 115 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#ColorMenuSpec
-                              #'name:' 'fgMenu'
-                              #'layout:' #(#LayoutFrame 101 0 17 0 10 1.0 40 0)
-                              #'activeHelpKey:' #foregroundColor
-                              #'model:' #foregroundColor
-                          )
-                           #(#LabelSpec
-                              #'name:' 'fgLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 29 0 1 0.5)
-                              #'label:' 'FG-Color:'
-                              #'adjust:' #right
-                              #'resizeForLabel:' true
-                          )
-                           #(#LabelSpec
-                              #'name:' 'bgLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 63 0 1 0.5)
-                              #'label:' 'BG-Color:'
-                              #'adjust:' #right
-                              #'resizeForLabel:' true
-                          )
-                           #(#ColorMenuSpec
-                              #'name:' 'bgMenu'
-                              #'layout:' #(#LayoutFrame 101 0 52 0 10 1.0 75 0)
-                              #'activeHelpKey:' #backgroundColor
-                              #'model:' #backgroundColor
-                          )
-                        )
-                    )
-                    #'label:' 'Default Colors:'
-                    #'labelPosition:' #topLeft
-                )
-                 #(#FramedBoxSpec
-                    #'name:' 'cellColorsBox'
-                    #'layout:' #(#LayoutFrame 0 0 127 0 0 1.0 226 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#LabelSpec
-                              #'name:' 'fgSelLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 32 0 1 0.5)
-                              #'label:' 'FG-Color:'
-                              #'adjust:' #right
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'fgSelField'
-                              #'layout:' #(#LayoutFrame 101 0 23 0 10 1.0 45 0)
-                              #'activeHelpKey:' #foregroundSelector
-                              #'model:' #foregroundSelector
-                              #'type:' #symbolOrNil
-                          )
-                           #(#LabelSpec
-                              #'name:' 'bgSelLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 66 0 1 0.5)
-                              #'label:' 'BG-Color:'
-                              #'adjust:' #right
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'bgSelField'
-                              #'layout:' #(#LayoutFrame 101 0 57 0 10 1.0 79 0)
-                              #'activeHelpKey:' #backgroundSelector
-                              #'model:' #backgroundSelector
-                              #'type:' #symbolOrNil
-                          )
-                        )
-                    )
-                    #'label:' 'Color Selectors (Cell):'
+                    #'label:' 'Cell Type:'
                     #'labelPosition:' #topLeft
                 )
               )
@@ -269,15 +167,15 @@
       )
 !
 
-colorEditSpec
+colorsEditSpec
     "this window spec was automatically generated by the ST/X UIPainter"
 
     "do not manually edit this - the painter/builder may not be able to
      handle the specification if its corrupted."
 
     "
-     UIPainter new openOnClass:DataSetBuilder andSelector:#colorEditSpec
-     DataSetBuilder new openInterface:#colorEditSpec
+     UIPainter new openOnClass:DataSetBuilder andSelector:#colorsEditSpec
+     DataSetBuilder new openInterface:#colorsEditSpec
     "
 
     <resource: #canvas>
@@ -288,11 +186,11 @@
           #'window:' 
            #(#WindowSpec
               #'name:' 'DataSet Misc'
-              #'layout:' #(#LayoutFrame 219 0 193 0 496 0 423 0)
+              #'layout:' #(#LayoutFrame 354 0 229 0 722 0 528 0)
               #'label:' 'DataSet Misc'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 219 193 497 424)
+              #'bounds:' #(#Rectangle 354 229 723 529)
               #'usePreferredExtent:' false
           )
           #'component:' 
@@ -301,271 +199,106 @@
                #(
                  #(#FramedBoxSpec
                     #'name:' 'defaultColorsBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 22 0 0 1.0 121 0)
+                    #'layout:' #(#LayoutFrame 0 0.0 88 0 0 1.0 230 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
                          #(
                            #(#ColorMenuSpec
                               #'name:' 'fgMenu'
-                              #'layout:' #(#LayoutFrame 101 0 17 0 10 1.0 45 0)
+                              #'layout:' #(#LayoutFrame 110 0 15 0 12 1.0 37 0)
                               #'activeHelpKey:' #foregroundColor
                               #'model:' #foregroundColor
                           )
                            #(#LabelSpec
                               #'name:' 'fgLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 32 0 1 0.5)
-                              #'label:' 'FG-Color:'
+                              #'layout:' #(#AlignmentOrigin 107 0 27 0 1 0.5)
+                              #'label:' 'Foreground:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#LabelSpec
                               #'name:' 'bgLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 66 0 1 0.5)
-                              #'label:' 'BG-Color:'
+                              #'layout:' #(#AlignmentOrigin 107 0 55 0 1 0.5)
+                              #'label:' 'Background:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#ColorMenuSpec
                               #'name:' 'bgMenu'
-                              #'layout:' #(#LayoutFrame 101 0 52 0 10 1.0 80 0)
+                              #'layout:' #(#LayoutFrame 110 0 43 0 12 1.0 65 0)
                               #'activeHelpKey:' #backgroundColor
                               #'model:' #backgroundColor
                           )
-                        )
-                    )
-                    #'label:' 'Default Colors:'
-                    #'labelPosition:' #topLeft
-                )
-                 #(#FramedBoxSpec
-                    #'name:' 'cellColorsBox'
-                    #'layout:' #(#LayoutFrame 0 0 127 0 0 1.0 226 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
                            #(#LabelSpec
                               #'name:' 'fgSelLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 32 0 1 0.5)
-                              #'label:' 'FG-Color:'
+                              #'layout:' #(#AlignmentOrigin 107 0 89 0 1 0.5)
+                              #'label:' 'FG-Selector:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
-                           #(#InputFieldSpec
-                              #'name:' 'fgSelField'
-                              #'layout:' #(#LayoutFrame 101 0 23 0 10 1.0 45 0)
-                              #'model:' #foregroundSelector
-                              #'activeHelpKey:' #foregroundSelector
-                              #'type:' #symbolOrNil
-                          )
                            #(#LabelSpec
                               #'name:' 'bgSelLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 66 0 1 0.5)
-                              #'label:' 'BG-Color:'
+                              #'layout:' #(#AlignmentOrigin 107 0 114 0 1 0.5)
+                              #'label:' 'BG-Selector:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#InputFieldSpec
                               #'name:' 'bgSelField'
-                              #'layout:' #(#LayoutFrame 101 0 57 0 10 1.0 79 0)
+                              #'layout:' #(#LayoutFrame 110 0 103 0 15 1.0 125 0)
+                              #'activeHelpKey:' #backgroundSelector
                               #'model:' #backgroundSelector
-                              #'activeHelpKey:' #backgroundSelector
+                              #'type:' #symbolOrNil
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'fgSelField'
+                              #'layout:' #(#LayoutFrame 110 0 78 0 15 1.0 100 0)
+                              #'activeHelpKey:' #foregroundSelector
+                              #'model:' #foregroundSelector
                               #'type:' #symbolOrNil
                           )
                         )
                     )
-                    #'label:' 'Color Selectors (Cell):'
-                    #'labelPosition:' #topLeft
-                )
-              )
-          )
-      )
-!
-
-detailsEditSpec
-    "this window spec was automatically generated by the ST/X UIPainter"
-
-    "do not manually edit this - the painter/builder may not be able to
-     handle the specification if its corrupted."
-
-    "
-     UIPainter new openOnClass:DataSetBuilder andSelector:#detailsEditSpec
-     DataSetBuilder new openInterface:#detailsEditSpec
-    "
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'name:' 'DataSet Basic'
-              #'layout:' #(#LayoutFrame 219 0 193 0 507 0 448 0)
-              #'label:' 'DataSet Basic'
-              #'min:' #(#Point 10 10)
-              #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 219 193 508 449)
-              #'usePreferredExtent:' false
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'name:' 'selectionBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 20 0 0 1.0 101 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#CheckBoxSpec
-                              #'name:' 'canSelect'
-                              #'layout:' #(#Point 83 15)
-                              #'activeHelpKey:' #canSelect
-                              #'model:' #canSelect
-                              #'label:' 'Is Selectable'
-                          )
-                           #(#LabelSpec
-                              #'name:' 'selectorLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 51 0 1 0.5)
-                              #'label:' 'Selector:'
-                              #'adjust:' #right
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'selectSelector'
-                              #'layout:' #(#LayoutFrame 86 0 42 0 17 1.0 62 0)
-                              #'activeHelpKey:' #selectSelector
-                              #'model:' #selectSelector
-                              #'type:' #symbolOrNil
-                          )
-                        )
-                    )
-                    #'label:' 'Selection:'
+                    #'label:' 'Cell Colors:'
                     #'labelPosition:' #topLeft
                 )
                  #(#FramedBoxSpec
-                    #'name:' 'separatorBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 131 0 0 1.0 217 0)
+                    #'name:' 'ColorsBox'
+                    #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 88 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
                          #(
-                           #(#CheckBoxSpec
-                              #'name:' 'showRowSeparator'
-                              #'layout:' #(#AlignmentOrigin 39 0 30 0 0 0.5)
-                              #'activeHelpKey:' #showRowSeparator
-                              #'model:' #showRowSeparator
-                              #'label:' 'Show Row-Separator'
+                           #(#ColorMenuSpec
+                              #'name:' 'colorMenu1'
+                              #'layout:' #(#LayoutFrame 110 0 15 0 12 1.0 37 0)
+                              #'activeHelpKey:' #foregroundColor
+                              #'model:' #labelForegroundColor
+                          )
+                           #(#LabelSpec
+                              #'name:' 'label1'
+                              #'layout:' #(#AlignmentOrigin 107 0 27 0 1 0.5)
+                              #'label:' 'Foreground:'
+                              #'adjust:' #right
+                              #'resizeForLabel:' true
                           )
-                           #(#CheckBoxSpec
-                              #'name:' 'showColSeparator'
-                              #'layout:' #(#AlignmentOrigin 39 0 56 0 0 0.5)
-                              #'activeHelpKey:' #showColumnSeparator
-                              #'model:' #showColSeparator
-                              #'label:' 'Show Column-Separator'
+                           #(#LabelSpec
+                              #'name:' 'label2'
+                              #'layout:' #(#AlignmentOrigin 107 0 55 0 1 0.5)
+                              #'label:' 'Background:'
+                              #'adjust:' #right
+                              #'resizeForLabel:' true
+                          )
+                           #(#ColorMenuSpec
+                              #'name:' 'colorMenu2'
+                              #'layout:' #(#LayoutFrame 110 0 43 0 12 1.0 65 0)
+                              #'activeHelpKey:' #backgroundColor
+                              #'model:' #labelBackgroundColor
                           )
                         )
                     )
-                    #'label:' 'Separators'
-                    #'labelPosition:' #topLeft
-                )
-              )
-          )
-      )
-!
-
-dimensionEditSpec
-    "this window spec was automatically generated by the ST/X UIPainter"
-
-    "do not manually edit this - the painter/builder may not be able to
-     handle the specification if its corrupted."
-
-    "
-     UIPainter new openOnClass:DataSetBuilder andSelector:#dimensionEditSpec
-     DataSetBuilder new openInterface:#dimensionEditSpec
-    "
-
-    <resource: #canvas>
-
-    ^
-     
-       #(#FullSpec
-          #'window:' 
-           #(#WindowSpec
-              #'name:' 'DataSet Dimension'
-              #'layout:' #(#LayoutFrame 197 0 172 0 487 0 385 0)
-              #'label:' 'DataSet Dimension'
-              #'min:' #(#Point 10 10)
-              #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 197 172 488 386)
-          )
-          #'component:' 
-           #(#SpecCollection
-              #'collection:' 
-               #(
-                 #(#FramedBoxSpec
-                    #'name:' 'columnWidthFrame'
-                    #'layout:' #(#LayoutFrame 0 0.0 20 0 0 1.0 107 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#LabelSpec
-                              #'name:' 'widthLabel'
-                              #'layout:' #(#AlignmentOrigin 68 0.0 27 0 1 0.5)
-                              #'label:' 'width:'
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'widthField'
-                              #'layout:' #(#LayoutFrame 70 0 17 0 0 1.0 39 0)
-                              #'activeHelpKey:' #width
-                              #'model:' #width
-                              #'type:' #numberOrNil
-                          )
-                           #(#LabelSpec
-                              #'name:' 'minWidthLabel'
-                              #'layout:' #(#AlignmentOrigin 68 0.0 56 0 1 0.5)
-                              #'label:' 'minWidth:'
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'minWidthField'
-                              #'layout:' #(#LayoutFrame 70 0 46 0 0 1.0 68 0)
-                              #'activeHelpKey:' #minWidth
-                              #'model:' #minWidth
-                              #'type:' #numberOrNil
-                          )
-                        )
-                    )
-                    #'label:' 'Column Width:'
-                    #'labelPosition:' #topLeft
-                )
-                 #(#FramedBoxSpec
-                    #'name:' 'rowHeightFrame'
-                    #'layout:' #(#LayoutFrame 0 0.0 134 0 0 1.0 194 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#LabelSpec
-                              #'name:' 'heightLabel'
-                              #'layout:' #(#AlignmentOrigin 68 0.0 29 0 1 0.5)
-                              #'label:' 'height:'
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'heightField'
-                              #'layout:' #(#LayoutFrame 70 0 19 0 0 1.0 41 0)
-                              #'activeHelpKey:' #height
-                              #'model:' #height
-                              #'type:' #numberOrNil
-                          )
-                        )
-                    )
-                    #'label:' 'Row Height:'
+                    #'label:' 'Label Colors:'
                     #'labelPosition:' #topLeft
                 )
               )
@@ -592,82 +325,116 @@
           #'window:' 
            #(#WindowSpec
               #'name:' 'DataSet Details'
-              #'layout:' #(#LayoutFrame 219 0 193 0 509 0 406 0)
+              #'layout:' #(#LayoutFrame 54 0 445 0 441 0 736 0)
               #'label:' 'DataSet Details'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 219 193 510 407)
+              #'bounds:' #(#Rectangle 54 445 442 737)
               #'usePreferredExtent:' false
           )
           #'component:' 
            #(#SpecCollection
               #'collection:' 
                #(
-                 #(#LabelSpec
-                    #'name:' 'textDescription'
-                    #'layout:' #(#Point 10 15)
-                    #'label:' 'Text Description:'
-                    #'resizeForLabel:' true
-                )
-                 #(#LabelSpec
-                    #'name:' 'formatLabel'
-                    #'layout:' #(#AlignmentOrigin 83 0 47 0 1 0.5)
-                    #'label:' 'Format:'
-                    #'resizeForLabel:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'formatField'
-                    #'layout:' #(#LayoutFrame 87 0 37 0 -2 1.0 59 0)
-                    #'activeHelpKey:' #formatString
-                    #'model:' #formatString
-                )
-                 #(#LabelSpec
-                    #'name:' 'inpFieldDescription'
-                    #'layout:' #(#Point 10 80)
-                    #'label:' 'InputField Description:'
-                    #'resizeForLabel:' true
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox1'
+                    #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 87 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#LabelSpec
+                              #'name:' 'typeLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 26 0 1 0.5)
+                              #'label:' 'Input Type:'
+                              #'resizeForLabel:' true
+                          )
+                           #(#LabelSpec
+                              #'name:' 'sizeLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 55 0 1 0.5)
+                              #'label:' 'Max Size:'
+                              #'resizeForLabel:' true
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'sizeField'
+                              #'layout:' #(#LayoutFrame 110 0 44 0 15 1.0 66 0)
+                              #'activeHelpKey:' #size
+                              #'model:' #size
+                              #'type:' #numberOrNil
+                          )
+                           #(#ComboListSpec
+                              #'name:' 'typeCombo'
+                              #'layout:' #(#LayoutFrame 110 0 18 0 15 1.0 40 0)
+                              #'activeHelpKey:' #type
+                              #'model:' #type
+                              #'comboList:' 
+                               #(#string
+                                  #password #number
+                                  #numberOrNil #symbolOrNil
+                              )
+                              #'useIndex:' false
+                          )
+                        )
+                    )
+                    #'label:' 'Input Format'
+                    #'labelPosition:' #topLeft
                 )
-                 #(#LabelSpec
-                    #'name:' 'typeLabel'
-                    #'layout:' #(#AlignmentOrigin 83 0 111 0 1 0.5)
-                    #'label:' 'Type:'
-                    #'resizeForLabel:' true
-                )
-                 #(#ComboListSpec
-                    #'name:' 'typeCombo'
-                    #'layout:' #(#LayoutFrame 87 0 102 0 -2 1.0 122 0)
-                    #'activeHelpKey:' #type
-                    #'model:' #type
-                    #'comboList:' #typeList
-                    #'useIndex:' false
-                )
-                 #(#LabelSpec
-                    #'name:' 'sizeLabel'
-                    #'layout:' #(#AlignmentOrigin 83 0 136 0 1 0.5)
-                    #'label:' 'Size:'
-                    #'resizeForLabel:' true
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'sizeField'
-                    #'layout:' #(#LayoutFrame 87 0 126 0 -2 1.0 148 0)
-                    #'activeHelpKey:' #size
-                    #'model:' #size
-                    #'type:' #numberOrNil
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox2'
+                    #'layout:' #(#LayoutFrame 0 0.0 87 0 0 1.0 175 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#LabelSpec
+                              #'name:' 'formatLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 55 0 1 0.5)
+                              #'label:' 'Text Format:'
+                              #'resizeForLabel:' true
+                          )
+                           #(#LabelSpec
+                              #'name:' 'JustificationLabel'
+                              #'layout:' #(#LayoutOrigin 35 0 21 0)
+                              #'label:' 'Justification:'
+                              #'adjust:' #left
+                              #'resizeForLabel:' true
+                          )
+                           #(#PopUpListSpec
+                              #'name:' 'Alignment'
+                              #'layout:' #(#LayoutFrame 110 0 18 0 15 1.0 40 0)
+                              #'label:' 'Alignment'
+                              #'model:' #labelAlignment
+                              #'menu:' 
+                               #(#left
+                                  #right #center
+                              )
+                              #'useIndex:' false
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'formatField'
+                              #'layout:' #(#LayoutFrame 110 0 45 0 15 1.0 67 0)
+                              #'activeHelpKey:' #formatString
+                              #'model:' #formatString
+                          )
+                        )
+                    )
+                    #'label:' 'Output Format'
+                    #'labelPosition:' #topLeft
                 )
               )
           )
       )
 !
 
-labelEditSpec
+frameEditSpec
     "this window spec was automatically generated by the ST/X UIPainter"
 
     "do not manually edit this - the painter/builder may not be able to
      handle the specification if its corrupted."
 
     "
-     UIPainter new openOnClass:DataSetBuilder andSelector:#labelEditSpec
-     DataSetBuilder new openInterface:#labelEditSpec
+     UIPainter new openOnClass:DataSetBuilder andSelector:#frameEditSpec
+     DataSetBuilder new openInterface:#frameEditSpec
     "
 
     <resource: #canvas>
@@ -677,12 +444,12 @@
        #(#FullSpec
           #'window:' 
            #(#WindowSpec
-              #'name:' 'DataSet Misc'
-              #'layout:' #(#LayoutFrame 219 0 193 0 496 0 423 0)
-              #'label:' 'DataSet Misc'
+              #'name:' 'DataSet Dimension'
+              #'layout:' #(#LayoutFrame 442 0 269 0 732 0 482 0)
+              #'label:' 'DataSet Dimension'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 219 193 497 424)
+              #'bounds:' #(#Rectangle 442 269 733 483)
               #'usePreferredExtent:' false
           )
           #'component:' 
@@ -690,103 +457,99 @@
               #'collection:' 
                #(
                  #(#FramedBoxSpec
-                    #'name:' 'ColorsBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 22 0 0 1.0 105 0)
+                    #'name:' 'separatorBox'
+                    #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 86 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
                          #(
-                           #(#ColorMenuSpec
-                              #'name:' 'fgMenu'
-                              #'layout:' #(#LayoutFrame 101 0 15 0 10 1.0 38 0)
-                              #'activeHelpKey:' #foregroundColor
-                              #'model:' #labelForegroundColor
+                           #(#CheckBoxSpec
+                              #'name:' 'showRowSeparator'
+                              #'layout:' #(#LayoutFrame 18 0 19 0 194 0 42 0)
+                              #'activeHelpKey:' #showRowSeparator
+                              #'model:' #showRowSeparator
+                              #'label:' 'Show Row-Separator'
+                          )
+                           #(#CheckBoxSpec
+                              #'name:' 'showColSeparator'
+                              #'layout:' #(#LayoutFrame 18 0 45 0 194 0 68 0)
+                              #'activeHelpKey:' #showColumnSeparator
+                              #'model:' #showColSeparator
+                              #'label:' 'Show Column-Separator'
+                          )
+                        )
+                    )
+                    #'label:' 'Separators'
+                    #'labelPosition:' #topLeft
+                )
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox1'
+                    #'layout:' #(#LayoutFrame 0 0.0 86 0 0 1.0 198 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#InputFieldSpec
+                              #'name:' 'heightField'
+                              #'layout:' #(#LayoutFrame 110 0 73 0 15 1.0 95 0)
+                              #'activeHelpKey:' #height
+                              #'model:' #height
+                              #'type:' #numberOrNil
                           )
                            #(#LabelSpec
-                              #'name:' 'fgLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 27 0 1 0.5)
-                              #'label:' 'FG-Color:'
+                              #'name:' 'heightLabel'
+                              #'layout:' #(#LayoutFrame 10 0.0 76 0 107 0.0 93 0)
+                              #'label:' 'Row Height:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#LabelSpec
-                              #'name:' 'bgLabel'
-                              #'layout:' #(#AlignmentOrigin 100 0 55 0 1 0.5)
-                              #'label:' 'BG-Color:'
+                              #'name:' 'minWidthLabel'
+                              #'layout:' #(#LayoutFrame 10 0.0 45 0 107 0.0 62 0)
+                              #'label:' 'Min Width:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
-                           #(#ColorMenuSpec
-                              #'name:' 'bgMenu'
-                              #'layout:' #(#LayoutFrame 101 0 44 0 10 1.0 67 0)
-                              #'activeHelpKey:' #backgroundColor
-                              #'model:' #labelBackgroundColor
+                           #(#InputFieldSpec
+                              #'name:' 'minWidthField'
+                              #'layout:' #(#LayoutFrame 110 0 42 0 15 1.0 64 0)
+                              #'activeHelpKey:' #minWidth
+                              #'model:' #minWidth
+                              #'type:' #numberOrNil
+                          )
+                           #(#LabelSpec
+                              #'name:' 'widthLabel'
+                              #'layout:' #(#LayoutFrame 10 0.0 20 0 107 0.0 37 0)
+                              #'label:' 'Column Width:'
+                              #'adjust:' #right
+                              #'resizeForLabel:' true
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'widthField'
+                              #'layout:' #(#LayoutFrame 110 0 17 0 15 1.0 39 0)
+                              #'activeHelpKey:' #width
+                              #'model:' #width
+                              #'type:' #numberOrNil
                           )
                         )
                     )
-                    #'label:' 'Colors:'
+                    #'label:' 'Dimensions:'
                     #'labelPosition:' #topLeft
                 )
-                 #(#UISubSpecification
-                    #'name:' 'fontSubSpec'
-                    #'layout:' #(#LayoutFrame 67 0.0 116 0 -4 1.0 141 0)
-                    #'minorKey:' #fontSpec
-                )
-                 #(#LabelSpec
-                    #'name:' 'ActionLabel'
-                    #'layout:' #(#AlignmentOrigin 110 0 189 0 1 0.5)
-                    #'label:' 'Select Action:'
-                    #'adjust:' #left
-                    #'resizeForLabel:' true
-                )
-                 #(#LabelSpec
-                    #'name:' 'ArgumentLabel'
-                    #'layout:' #(#AlignmentOrigin 110 0 212 0 1 0.5)
-                    #'label:' 'Argument:'
-                    #'adjust:' #left
-                    #'resizeForLabel:' true
-                )
-                 #(#LabelSpec
-                    #'name:' 'AlignLabel'
-                    #'layout:' #(#AlignmentOrigin 110 0 157 0 1 0.5)
-                    #'label:' 'Align Label:'
-                    #'adjust:' #left
-                    #'resizeForLabel:' true
-                )
-                 #(#PopUpListSpec
-                    #'name:' 'Alignment'
-                    #'layout:' #(#LayoutFrame 116 0 146 0 -4 1.0 168 0)
-                    #'label:' 'Alignment'
-                    #'model:' #labelAlignment
-                    #'menu:' #alignmentList
-                    #'useIndex:' false
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'ActionSelector'
-                    #'layout:' #(#LayoutFrame 116 0 179 0 -4 1.0 201 0)
-                    #'model:' #labelActionSelector
-                    #'type:' #symbolOrNil
-                )
-                 #(#InputFieldSpec
-                    #'name:' 'ArgumentValue'
-                    #'layout:' #(#LayoutFrame 116 0 202 0 -4 1.0 224 0)
-                    #'model:' #labelActionArgument
-                    #'type:' #string
-                )
               )
           )
       )
 !
 
-selectorsEditSpec
+selectionEditSpec
     "this window spec was automatically generated by the ST/X UIPainter"
 
     "do not manually edit this - the painter/builder may not be able to
      handle the specification if its corrupted."
 
     "
-     UIPainter new openOnClass:DataSetBuilder andSelector:#selectorsEditSpec
-     DataSetBuilder new openInterface:#selectorsEditSpec
+     UIPainter new openOnClass:DataSetBuilder andSelector:#selectionEditSpec
+     DataSetBuilder new openInterface:#selectionEditSpec
     "
 
     <resource: #canvas>
@@ -797,11 +560,143 @@
           #'window:' 
            #(#WindowSpec
               #'name:' 'DataSet Basic'
-              #'layout:' #(#LayoutFrame 55 0 280 0 350 0 585 0)
+              #'layout:' #(#LayoutFrame 414 0 196 0 702 0 451 0)
               #'label:' 'DataSet Basic'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1280 1024)
-              #'bounds:' #(#Rectangle 55 280 351 586)
+              #'bounds:' #(#Rectangle 414 196 703 452)
+              #'usePreferredExtent:' false
+          )
+          #'component:' 
+           #(#SpecCollection
+              #'collection:' 
+               #(
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox1'
+                    #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 84 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#CheckBoxSpec
+                              #'name:' 'canSelect'
+                              #'layout:' #(#Point 107 17)
+                              #'activeHelpKey:' #canSelect
+                              #'model:' #canSelect
+                              #'label:' 'Is Selectable'
+                          )
+                           #(#LabelSpec
+                              #'name:' 'selectorLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 51 0 1 0.5)
+                              #'label:' 'Selector:'
+                              #'adjust:' #right
+                              #'resizeForLabel:' true
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'selectSelector'
+                              #'layout:' #(#LayoutFrame 110 0 42 0 15 1.0 64 0)
+                              #'activeHelpKey:' #selectSelector
+                              #'model:' #selectSelector
+                              #'type:' #symbolOrNil
+                          )
+                        )
+                    )
+                    #'label:' 'Selection:'
+                    #'labelPosition:' #topLeft
+                )
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox2'
+                    #'layout:' #(#LayoutFrame 0 0.0 84 0 0 1.0 166 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#InputFieldSpec
+                              #'name:' 'ArgumentValue'
+                              #'layout:' #(#LayoutFrame 110 0 42 0 15 1.0 64 0)
+                              #'model:' #labelActionArgument
+                              #'type:' #string
+                          )
+                           #(#LabelSpec
+                              #'name:' 'ArgumentLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 52 0 1 0.5)
+                              #'label:' 'Argument:'
+                              #'adjust:' #left
+                              #'resizeForLabel:' true
+                          )
+                           #(#LabelSpec
+                              #'name:' 'ActionLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 27 0 1 0.5)
+                              #'label:' 'Selector:'
+                              #'adjust:' #left
+                              #'resizeForLabel:' true
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'ActionSelector'
+                              #'layout:' #(#LayoutFrame 110 0 17 0 15 1.0 39 0)
+                              #'model:' #labelActionSelector
+                              #'type:' #symbolOrNil
+                          )
+                        )
+                    )
+                    #'label:' 'Select Action:'
+                    #'labelPosition:' #topLeft
+                )
+                 #(#FramedBoxSpec
+                    #'name:' 'framedBox3'
+                    #'layout:' #(#LayoutFrame 0 0.0 166 0 0 1.0 220 0)
+                    #'component:' 
+                     #(#SpecCollection
+                        #'collection:' 
+                         #(
+                           #(#LabelSpec
+                              #'name:' 'doubleLabel'
+                              #'layout:' #(#AlignmentOrigin 107 0 26 0 1 0.5)
+                              #'label:' 'Selector:'
+                              #'adjust:' #right
+                              #'resizeForLabel:' true
+                          )
+                           #(#InputFieldSpec
+                              #'name:' 'doubleClicked'
+                              #'layout:' #(#LayoutFrame 110 0 16 0 15 1.0 38 0)
+                              #'activeHelpKey:' #doubleClickedSelector
+                              #'model:' #doubleClickedSelector
+                              #'type:' #symbolOrNil
+                          )
+                        )
+                    )
+                    #'label:' 'Doubel Click:'
+                    #'labelPosition:' #topLeft
+                )
+              )
+          )
+      )
+!
+
+valuesEditSpec
+    "this window spec was automatically generated by the ST/X UIPainter"
+
+    "do not manually edit this - the painter/builder may not be able to
+     handle the specification if its corrupted."
+
+    "
+     UIPainter new openOnClass:DataSetBuilder andSelector:#valuesEditSpec
+     DataSetBuilder new openInterface:#valuesEditSpec
+    "
+
+    <resource: #canvas>
+
+    ^
+     
+       #(#FullSpec
+          #'window:' 
+           #(#WindowSpec
+              #'name:' 'DataSet Basic'
+              #'layout:' #(#LayoutFrame 563 0 305 0 858 0 610 0)
+              #'label:' 'DataSet Basic'
+              #'min:' #(#Point 10 10)
+              #'max:' #(#Point 1280 1024)
+              #'bounds:' #(#Rectangle 563 305 859 611)
               #'usePreferredExtent:' false
           )
           #'component:' 
@@ -810,122 +705,96 @@
                #(
                  #(#FramedBoxSpec
                     #'name:' 'valuesBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 16 0 0 1.0 117 0)
+                    #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 107 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
                          #(
                            #(#LabelSpec
                               #'name:' 'readLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 25 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 107 0 28 0 1 0.5)
                               #'label:' 'Read:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#InputFieldSpec
                               #'name:' 'readSelector'
-                              #'layout:' #(#LayoutFrame 86 0 16 0 17 1.0 36 0)
+                              #'layout:' #(#LayoutFrame 110 0 18 0 15 1.0 40 0)
                               #'activeHelpKey:' #readSelector
                               #'model:' #readSelector
                               #'type:' #symbolOrNil
                           )
                            #(#InputFieldSpec
                               #'name:' 'writeSelector'
-                              #'layout:' #(#LayoutFrame 86 0 38 0 17 1.0 58 0)
+                              #'layout:' #(#LayoutFrame 110 0 43 0 15 1.0 63 0)
                               #'activeHelpKey:' #writeSelector
                               #'model:' #writeSelector
                               #'type:' #symbolOrNil
                           )
                            #(#LabelSpec
                               #'name:' 'printLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 75 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 107 0 76 0 1 0.5)
                               #'label:' 'Print:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#InputFieldSpec
                               #'name:' 'printSelector'
-                              #'layout:' #(#LayoutFrame 86 0 66 0 17 1.0 86 0)
+                              #'layout:' #(#LayoutFrame 110 0 66 0 15 1.0 86 0)
                               #'activeHelpKey:' #printSelector
                               #'model:' #printSelector
                               #'type:' #symbolOrNil
                           )
                            #(#LabelSpec
                               #'name:' 'writeLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 48 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 107 0 53 0 1 0.5)
                               #'label:' 'Write:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                         )
                     )
-                    #'label:' 'Values:'
+                    #'label:' 'Value Selectors:'
                     #'labelPosition:' #topLeft
                 )
                  #(#FramedBoxSpec
                     #'name:' 'menusBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 120 0 0 1.0 200 0)
+                    #'layout:' #(#LayoutFrame 0 0.0 107 0 0 1.0 186 0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
                          #(
                            #(#LabelSpec
                               #'name:' 'menuLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 25 0 1 0.5)
+                              #'layout:' #(#AlignmentOrigin 107 0 28 0 1 0.5)
                               #'label:' 'Menu:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#InputFieldSpec
                               #'name:' 'menuSelector'
-                              #'layout:' #(#LayoutFrame 86 0 16 0 17 1.0 36 0)
+                              #'layout:' #(#LayoutFrame 110 0 18 0 15 1.0 38 0)
                               #'activeHelpKey:' #menuSelector
                               #'model:' #menu
                               #'type:' #symbolOrNil
                           )
                            #(#LabelSpec
                               #'name:' 'choicesLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 51 0 1 0.5)
-                              #'label:' 'Choices:'
+                              #'layout:' #(#AlignmentOrigin 107 0 51 0 1 0.5)
+                              #'label:' 'Choice:'
                               #'adjust:' #right
                               #'resizeForLabel:' true
                           )
                            #(#InputFieldSpec
                               #'name:' 'choicesSelector'
-                              #'layout:' #(#LayoutFrame 86 0 42 0 17 1.0 62 0)
+                              #'layout:' #(#LayoutFrame 110 0 41 0 15 1.0 61 0)
                               #'activeHelpKey:' #choices
                               #'model:' #choices
                               #'type:' #symbolOrNil
                           )
                         )
                     )
-                    #'label:' 'Menus:'
-                    #'labelPosition:' #topLeft
-                )
-                 #(#FramedBoxSpec
-                    #'name:' 'eventBox'
-                    #'layout:' #(#LayoutFrame 0 0.0 203 0 0 1.0 252 0)
-                    #'component:' 
-                     #(#SpecCollection
-                        #'collection:' 
-                         #(
-                           #(#LabelSpec
-                              #'name:' 'doubleLabel'
-                              #'layout:' #(#AlignmentOrigin 84 0 24 0 1 0.5)
-                              #'label:' 'Double:'
-                              #'adjust:' #right
-                              #'resizeForLabel:' true
-                          )
-                           #(#InputFieldSpec
-                              #'name:' 'doubleClicked'
-                              #'layout:' #(#LayoutFrame 86 0 15 0 17 1.0 35 0)
-                              #'activeHelpKey:' #doubleClickedSelector
-                              #'model:' #doubleClickedSelector
-                              #'type:' #symbolOrNil
-                          )
-                        )
-                    )
-                    #'label:' 'Click Events:'
+                    #'label:' 'Menu Selectors:'
                     #'labelPosition:' #topLeft
                 )
               )
@@ -1020,14 +889,6 @@
 )
 ! !
 
-!DataSetBuilder class methodsFor:'images'!
-
-iconCreateItem
-    ^ MenuEditor iconCreateItem
-
-
-! !
-
 !DataSetBuilder class methodsFor:'interface specs'!
 
 defineClassNameSpec
@@ -1049,11 +910,12 @@
           #'window:' 
            #(#WindowSpec
               #'name:' 'Class Definition'
-              #'layout:' #(#LayoutFrame 76 0 249 0 401 0 378 0)
+              #'layout:' #(#LayoutFrame 299 0 162 0 624 0 291 0)
               #'label:' 'Class Definition'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1152 900)
-              #'bounds:' #(#Rectangle 76 249 402 379)
+              #'bounds:' #(#Rectangle 299 162 625 292)
+              #'usePreferredExtent:' false
           )
           #'component:' 
            #(#SpecCollection
@@ -1062,21 +924,21 @@
                  #(#LabelSpec
                     #'name:' 'classLabel'
                     #'layout:' #(#AlignmentOrigin 50 0.11 50 0 1 0.5)
-                    #'label:' 'class:'
+                    #'label:' 'Class:'
                     #'adjust:' #right
                     #'resizeForLabel:' true
                 )
                  #(#LabelSpec
                     #'name:' 'superClassLabel'
                     #'layout:' #(#AlignmentOrigin 50 0.11 77 0 1 0.5)
-                    #'label:' 'superclass:'
+                    #'label:' 'Superclass:'
                     #'adjust:' #right
                     #'resizeForLabel:' true
                 )
                  #(#LabelSpec
                     #'name:' 'topLabel'
                     #'layout:' #(#Point 2 10)
-                    #'label:' 'class for code:'
+                    #'label:' 'Class for code:'
                     #'adjust:' #left
                     #'resizeForLabel:' true
                 )
@@ -1095,17 +957,17 @@
                          #(
                            #(#ActionButtonSpec
                               #'name:' 'button1'
-                              #'label:' 'cancel'
+                              #'label:' 'Cancel'
                               #'tabable:' true
                               #'model:' #cancel
                               #'extent:' #(#Point 156 22)
                           )
                            #(#ActionButtonSpec
                               #'name:' 'button2'
-                              #'label:' 'ok'
+                              #'label:' 'OK'
                               #'tabable:' true
+                              #'model:' #accept
                               #'isDefault:' true
-                              #'model:' #accept
                               #'extent:' #(#Point 157 22)
                           )
                         )
@@ -1127,14 +989,14 @@
 !
 
 slices
-    ^  #(       (Basics         basicsEditSpec)
-                (Details        detailsEditSpec)
-                (Selectors      selectorsEditSpec)
-                (Format         formatEditSpec)
-                (Label          labelEditSpec)
-                (Cell           cellEditSpec)
-                (Dimension      dimensionEditSpec)
-        )
+    ^#(
+        (Basics         basicsEditSpec)
+        (Values         valuesEditSpec)
+        (Format         formatEditSpec)
+        (Selection      selectionEditSpec)
+        (Frame          frameEditSpec)
+        (Colors         colorsEditSpec)
+    )
 !
 
 windowSpec
@@ -1156,12 +1018,13 @@
        #(#FullSpec
           #'window:' 
            #(#WindowSpec
-              #'name:' 'unnamed canvas'
-              #'layout:' #(#LayoutFrame 219 0 193 0 705 0 520 0)
-              #'label:' 'unnamed canvas'
+              #'name:' 'Data Set Builder'
+              #'layout:' #(#LayoutFrame 442 0 314 0 928 0 673 0)
+              #'label:' 'Data Set Builder'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1152 900)
-              #'bounds:' #(#Rectangle 219 193 706 521)
+              #'bounds:' #(#Rectangle 442 314 929 674)
+              #'menu:' #menu
               #'usePreferredExtent:' false
           )
           #'component:' 
@@ -1169,13 +1032,13 @@
               #'collection:' 
                #(
                  #(#MenuPanelSpec
-                    #'name:' 'mainMenu'
-                    #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 25 0)
-                    #'menu:' #mainMenu
+                    #'name:' 'menuToolbarView'
+                    #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 34 0)
+                    #'menu:' #menuToolbar
                 )
                  #(#VariableHorizontalPanelSpec
                     #'name:' 'VariablePanel'
-                    #'layout:' #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
+                    #'layout:' #(#LayoutFrame 0 0.0 36 0.0 0 1.0 -22 1.0)
                     #'component:' 
                      #(#SpecCollection
                         #'collection:' 
@@ -1186,17 +1049,12 @@
                                #(#SpecCollection
                                   #'collection:' 
                                    #(
-                                     #(#MenuPanelSpec
-                                        #'name:' 'subMenu'
-                                        #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 35 0)
-                                        #'menu:' #subMenu
-                                    )
                                      #(#SequenceViewSpec
                                         #'name:' 'columnView'
-                                        #'layout:' #(#LayoutFrame 0 0.0 35 0.0 0 1.0 0 1.0)
+                                        #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
                                         #'enableChannel:' #isNotModified
                                         #'model:' #selectedColumnModel
-                                        #'menu:' #columnMenu
+                                        #'menu:' #menuEdit
                                         #'hasHorizontalScrollBar:' true
                                         #'hasVerticalScrollBar:' true
                                         #'miniScrollerHorizontal:' true
@@ -1233,17 +1091,17 @@
                                              #(
                                                #(#ActionButtonSpec
                                                   #'name:' 'cancelButton'
-                                                  #'label:' 'cancel'
+                                                  #'label:' 'Cancel'
                                                   #'model:' #cancel
                                                   #'enableChannel:' #modifiedChannel
                                                   #'extent:' #(#Point 173 24)
                                               )
                                                #(#ActionButtonSpec
                                                   #'name:' 'acceptButton'
-                                                  #'label:' 'ok'
+                                                  #'label:' 'OK'
                                                   #'model:' #accept
                                                   #'enableChannel:' #modifiedChannel
-                                                  #'extent:' #(#Point 173 24)
+                                                  #'extent:' #(#Point 174 24)
                                               )
                                             )
                                         )
@@ -1260,6 +1118,20 @@
                     )
                     #'handles:' #(#Any 0.265905 1.0)
                 )
+                 #(#LabelSpec
+                    #'name:' 'infoLabel'
+                    #'layout:' #(#LayoutFrame 0 0.0 -22 1 -80 1.0 0 1.0)
+                    #'labelChannel:' #valueOfInfoLabel
+                    #'level:' 1
+                    #'adjust:' #left
+                )
+                 #(#LabelSpec
+                    #'name:' 'timeLabel'
+                    #'layout:' #(#LayoutFrame -80 1 -22 1 0 1.0 0 1.0)
+                    #'labelChannel:' #valueOfTimeLabel
+                    #'level:' 1
+                    #'adjust:' #right
+                )
               )
           )
       )
@@ -1267,42 +1139,15 @@
 
 !DataSetBuilder class methodsFor:'menu specs'!
 
-columnMenu
+menu
     "this window spec was automatically generated by the ST/X MenuEditor"
 
     "do not manually edit this - the builder may not be able to
      handle the specification if its corrupted."
 
     "
-     MenuEditor new openOnClass:DataSetBuilder andSelector:#columnMenu
-     (Menu new fromLiteralArrayEncoding:(DataSetBuilder columnMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^
-     
-       #(#Menu
-          
-           #(
-             #(#MenuItem
-                #'label:' 'cut'
-                #'value:' #doCutColumn
-            )
-          ) nil
-          nil
-      )
-!
-
-mainMenu
-    "this window spec was automatically generated by the ST/X MenuEditor"
-
-    "do not manually edit this - the builder may not be able to
-     handle the specification if its corrupted."
-
-    "
-     MenuEditor new openOnClass:DataSetBuilder andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(DataSetBuilder mainMenu)) startUp
+     MenuEditor new openOnClass:DataSetBuilder andSelector:#menu
+     (Menu new fromLiteralArrayEncoding:(DataSetBuilder menu)) startUp
     "
 
     <resource: #menu>
@@ -1313,13 +1158,37 @@
           
            #(
              #(#MenuItem
-                #'label:' 'file'
+                #'label:' 'About'
+                #'labelImage:' #(#ResourceRetriever #UIPainter #icon)
+                #'submenuChannel:' #menuAbout
+            )
+             #(#MenuItem
+                #'label:' 'File'
+                #'accessCharacterPosition:' 1
                 #'submenu:' 
                  #(#Menu
                     
                      #(
                        #(#MenuItem
-                          #'label:' 'close'
+                          #'label:' 'Generate Code'
+                          #'value:' #doGenerateCode
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Define Class...'
+                          #'value:' #doDefineClass
+                      )
+                       #(#MenuItem
+                          #'label:' 'Browse Class'
+                          #'value:' #doBrowseClass
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Exit'
                           #'value:' #closeRequest
                       )
                     ) nil
@@ -1327,44 +1196,91 @@
                 )
             )
              #(#MenuItem
-                #'label:' 'code'
-                #'submenu:' 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #'label:' 'class'
-                          #'value:' #doDefineClass
-                      )
-                       #(#MenuItem
-                          #'label:' 'generate code'
-                          #'value:' #doGenerateCode
-                      )
-                       #(#MenuItem
-                          #'label:' '-'
-                      )
-                       #(#MenuItem
-                          #'label:' 'browse class'
-                          #'value:' #doBrowseClass
-                      )
-                    ) nil
-                    nil
-                )
+                #'label:' 'Edit'
+                #'accessCharacterPosition:' 1
+                #'submenuChannel:' #menuEdit
             )
           ) nil
           nil
       )
 !
 
-subMenu
+menuEdit
     "this window spec was automatically generated by the ST/X MenuEditor"
 
     "do not manually edit this - the builder may not be able to
      handle the specification if its corrupted."
 
     "
-     MenuEditor new openOnClass:DataSetBuilder andSelector:#subMenu
-     (Menu new fromLiteralArrayEncoding:(DataSetBuilder subMenu)) startUp
+     MenuEditor new openOnClass:DataSetBuilder andSelector:#menuEdit
+     (Menu new fromLiteralArrayEncoding:(DataSetBuilder menuEdit)) startUp
+    "
+
+    <resource: #menu>
+
+    ^
+     
+       #(#Menu
+          
+           #(
+             #(#MenuItem
+                #'label:' 'Cut'
+                #'value:' #doCutColumn
+                #'enabled:' #isColumnSelected
+                #'shortcutKeyCharacter:' #Cut
+            )
+             #(#MenuItem
+                #'label:' 'Copy'
+                #'value:' #doCopyColumn
+                #'enabled:' #isColumnSelected
+                #'shortcutKeyCharacter:' #Copy
+            )
+             #(#MenuItem
+                #'label:' 'Paste'
+                #'value:' #doPasteColumn
+                #'enabled:' #valueOfHavingClipboard
+                #'shortcutKeyCharacter:' #Paste
+            )
+             #(#MenuItem
+                #'label:' '-'
+            )
+             #(#MenuItem
+                #'label:' 'Create Column'
+                #'value:' #doCreateColumn
+                #'enabled:' #isNotModified
+                #'labelImage:' #(#ResourceRetriever #DataSetBuilder #newColumnIcon 'Create Column')
+            )
+             #(#MenuItem
+                #'label:' '-'
+            )
+             #(#MenuItem
+                #'label:' 'Shift Up'
+                #'value:' #'doMoveColumn:'
+                #'enabled:' #isColumnSelected
+                #'argument:' #up
+                #'labelImage:' #(#ResourceRetriever #DataSetBuilder #upIcon 'Shift Up')
+            )
+             #(#MenuItem
+                #'label:' 'Shift Down'
+                #'value:' #'doMoveColumn:'
+                #'enabled:' #isColumnSelected
+                #'argument:' #down
+                #'labelImage:' #(#ResourceRetriever #DataSetBuilder #downIcon 'Shift Down')
+            )
+          ) nil
+          nil
+      )
+!
+
+menuToolbar
+    "this window spec was automatically generated by the ST/X MenuEditor"
+
+    "do not manually edit this - the builder may not be able to
+     handle the specification if its corrupted."
+
+    "
+     MenuEditor new openOnClass:DataSetBuilder andSelector:#menuToolbar
+     (Menu new fromLiteralArrayEncoding:(DataSetBuilder menuToolbar)) startUp
     "
 
     <resource: #menu>
@@ -1376,44 +1292,43 @@
            #(
              #(#MenuItem
                 #'label:' 'createColumn'
+                #'isButton:' true
                 #'value:' #doCreateColumn
                 #'enabled:' #isNotModified
-                #'labelImage:' #(#ResourceRetriever #MenuEditor #iconCreateItem)
-            )
-             #(#MenuItem
-                #'label:' '-'
+                #'labelImage:' #(#ResourceRetriever nil #newColumnIcon)
             )
              #(#MenuItem
                 #'label:' ''
             )
              #(#MenuItem
-                #'label:' '-'
-            )
-             #(#MenuItem
                 #'label:' 'stepUp'
+                #'isButton:' true
                 #'value:' #'doMoveColumn:'
-                #'enabled:' #isNotModified
+                #'enabled:' #isColumnSelected
                 #'argument:' #up
-                #'labelImage:' #(#ResourceRetriever #UIPainter #iconStepUp)
-            )
-             #(#MenuItem
-                #'label:' '-'
+                #'labelImage:' #(#ResourceRetriever nil #upIcon)
             )
              #(#MenuItem
                 #'label:' 'stepDown'
+                #'isButton:' true
                 #'value:' #'doMoveColumn:'
-                #'enabled:' #isNotModified
+                #'enabled:' #isColumnSelected
                 #'argument:' #down
-                #'labelImage:' #(#ResourceRetriever #UIPainter #iconStepDown)
-            )
-             #(#MenuItem
-                #'label:' '-'
+                #'labelImage:' #(#ResourceRetriever nil #downIcon)
             )
           ) nil
           nil
       )
 ! !
 
+!DataSetBuilder class methodsFor:'resources'!
+
+newColumnIcon
+    "ImageEditor openOnClass:self andSelector:#newColumnIcon"
+
+    <resource: #image>
+    ^(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(#[17 17 16 0 0 0 0 0 0 17 17 17 17 16 17 17 17 17 17 32 17 17 17 17 16 18 34 34 34 34 48 17 17 17 17 16 18 32 2 32 34 48 17 17 17 17 16 18 2 34 2 2 48 17 17 17 17 16 18 2 34 2 2 48 17 17 17 17 16 18 32 2 32 34 48 17 17 16 17 16 18 34 34 34 34 48 17 17 17 17 16 18 2 34 2 2 48 17 17 17 17 16 18 2 34 2 2 48 17 17 17 17 16 18 2 34 2 2 48 17 17 17 17 16 18 0 2 0 2 48 17 17 17 17 16 18 34 34 34 34 48 17 17 17 17 16 18 34 34 34 34 48 17 17 17 17 16 18 2 2 2 2 48 17 17 17 17 16 18 0 2 0 2 48 17 17 17 17 16 18 2 2 0 2 48 17 17 17 17 16 18 2 2 2 2 48 17 17 17 17 16 18 34 34 34 34 48 17 17 17 17 16 18 34 34 34 34 48 17 17 17 17 16 35 51 51 51 51 48 17 17 17 17 16 0 0 0 0 0 0 17 17]) ; colorMap:((OrderedCollection new add:(Color black); add:(Color white); add:(Color grey:66.9978); add:(Color grey:49.9962); add:(Color red:100.0 green:0.0 blue:0.0); add:(Color red:0.0 green:100.0 blue:0.0); add:(Color red:0.0 green:0.0 blue:100.0); add:(Color red:0.0 green:100.0 blue:100.0); add:(Color red:100.0 green:100.0 blue:0.0); add:(Color red:100.0 green:0.0 blue:100.0); add:(Color red:49.9992 green:0.0 blue:0.0); add:(Color red:0.0 green:49.9992 blue:0.0); add:(Color red:0.0 green:0.0 blue:49.9992); add:(Color red:0.0 green:49.9992 blue:49.9992); add:(Color red:49.9992 green:49.9992 blue:0.0); add:(Color red:49.9992 green:0.0 blue:49.9992); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(#[7 255 192 7 255 192 7 255 192 7 255 192 7 255 192 7 255 192 7 255 192 7 255 192 7 255 195 7 255 192 7 255 192 7 255 192 7 255 192 7 255 195 7 255 193 7 255 192 7 255 195 7 255 192 7 255 195 7 255 192 7 255 192 7 255 193]) ; yourself); yourself! !
+
 !DataSetBuilder methodsFor:'accessing'!
 
 columns
@@ -1485,14 +1400,24 @@
 
 !
 
+doCopyColumn
+    "copy selected column to the clipboard"
+
+    |idx|
+
+    (idx := selectedColumnIndex) ~~ 0 ifTrue:[
+        self clipboard: (columns at: idx) deepCopy.
+    ].
+!
+
 doCreateColumn
     "create a new column after selected column or at left (nothing selected)
     "
     |label list|
 
     list := self seqList.
-    label := 'column ', list size printString.
-    columns add:(DataSetColumnSpec label:label selector:#ToBeDefined) afterIndex:selectedColumnIndex.
+    label := 'Column ', list size printString.
+    columns add:(DataSetColumnSpec label:label selector:nil) afterIndex:selectedColumnIndex.
     self seqList add:label afterIndex:selectedColumnIndex.
     hasChanged := true.
 
@@ -1504,15 +1429,17 @@
 !
 
 doCutColumn
-    "remove selected column
-    "
+    "remove selected column and put it to the clipboard"
+
     |idx|
 
     (idx := selectedColumnIndex) ~~ 0 ifTrue:[
         self selectedColumnModel value:0.
+        self clipboard: (columns at: idx).
         columns removeIndex:idx.
         self seqList removeIndex:idx.
         self updateColumnView.
+        columns isEmpty ifTrue: [self isColumnSelected value: false]
     ].
 !
 
@@ -1650,6 +1577,24 @@
     self updateColumnView.
 !
 
+doPasteColumn
+    "paste clipboard copy column after selected column or at left (nothing selected)
+    "
+    |label list|
+
+    list := self seqList.
+    label := self class clipboard label.
+    columns add: self class clipboard deepCopy afterIndex:selectedColumnIndex.
+    self seqList add: label afterIndex:selectedColumnIndex.
+    hasChanged := true.
+
+    self modified ifFalse:[
+        self selectedColumnModel value:(selectedColumnIndex + 1)
+    ].
+    self updateColumnView.
+
+!
+
 mainMenu
     "this window spec was automatically generated by the UI Builder"
 
@@ -1658,6 +1603,30 @@
 
 !
 
+menu
+    "this window spec was automatically generated by the UI Builder"
+
+    ^ self class menu
+
+
+!
+
+menuEdit
+    "this window spec was automatically generated by the UI Builder"
+
+    ^ self class menuEdit
+
+
+!
+
+menuToolbar
+    "this window spec was automatically generated by the UI Builder"
+
+    ^ self class menuToolbar
+
+
+!
+
 subMenu
     "this window spec was automatically generated by the UI Builder"
 
@@ -1713,18 +1682,11 @@
         tabSelectionIndex == 0 ifTrue:[self tabModel value:1].
     ].
     self modifiedChannel value:false.
-    self isNotModified   value:true.
     isModified := false.
 ! !
 
 !DataSetBuilder methodsFor:'aspects'!
 
-alignmentList
-    ^ #( #left #right #center )
-
-
-!
-
 aspectFor:aKey
     "returns aspect for a key or nil
     "
@@ -1750,11 +1712,11 @@
     ^ list
 !
 
-isNotModified
+isColumnSelected
     "returns a boolean value holder which is set to true if something is modified
      and not accepted
     "
-    ^ builder valueAspectFor:#isNotModified initialValue:true
+    ^ builder valueAspectFor:#isColumnSelected initialValue: false
 
 
 
@@ -1842,12 +1804,6 @@
         builder aspectAt:#tabModel put:holder.
     ].
     ^ holder
-!
-
-typeList
-    "automatically generated by UIPainter ..."
-
-    ^ #( string password number numberOrNil symbolOrNil )
 ! !
 
 !DataSetBuilder methodsFor:'change & update'!
@@ -1858,7 +1814,7 @@
     isModified ifFalse:[
         isModified := hasChanged := true.
         self modifiedChannel value:true.
-        self isNotModified   value:false.
+        "self isNotModified   value:false. "
     ]
 ! !
 
@@ -2157,6 +2113,23 @@
 
 !DataSetBuilder methodsFor:'private'!
 
+checkMenuItemModified
+    "check column modification"
+
+    self modifiedChannel value
+    ifTrue:
+    [
+        ((YesNoBox title:'Column was modified!!\Save it?\' withCRs)        
+            noText:'No';
+            yesText:'Yes';
+            showAtPointer;
+            accepted) ifFalse: [self modifiedChannel value: false. ^true].
+        self accept
+    ].
+    ^true
+
+!
+
 resolveClassNamed
     "returns current class or nil
     "
@@ -2207,6 +2180,7 @@
     something == selectedColumnIndex ifFalse:[
         selectedColumnIndex := something ? 0.
         self cancel.
+        self isColumnSelected value: true
     ].
 
 !
@@ -2238,6 +2212,18 @@
 
 ! !
 
+!DataSetBuilder methodsFor:'startup / release'!
+
+postBuildWith:builder
+
+    super postBuildWith:builder.
+
+    (builder componentAt: #columnView) selectConditionBlock: [:i|self checkMenuItemModified]
+
+
+
+! !
+
 !DataSetBuilder class methodsFor:'documentation'!
 
 version