DataSetBuilder.st
changeset 2262 d40eebea4d20
parent 2259 6135c53d6903
child 2321 79448e86dfd4
equal deleted inserted replaced
2261:60725fccd12d 2262:d40eebea4d20
    11 "
    11 "
    12 "{ Package: 'stx:libtool2' }"
    12 "{ Package: 'stx:libtool2' }"
    13 
    13 
    14 ResourceSpecEditor subclass:#DataSetBuilder
    14 ResourceSpecEditor subclass:#DataSetBuilder
    15 	instanceVariableNames:'rowClass rowSuperClass columnView columns selectedColumnIndex
    15 	instanceVariableNames:'rowClass rowSuperClass columnView columns selectedColumnIndex
    16 		modalOpened listOfSpecViews'
    16 		modalOpened listOfSpecViews listOfItemsView'
    17 	classVariableNames:''
    17 	classVariableNames:''
    18 	poolDictionaries:''
    18 	poolDictionaries:''
    19 	category:'Interface-UIPainter'
    19 	category:'Interface-UIPainter'
    20 !
    20 !
    21 
    21 
   151     ^ super flyByHelpSpec addPairsFrom:#(
   151     ^ super flyByHelpSpec addPairsFrom:#(
   152 
   152 
   153 #addColumn
   153 #addColumn
   154 'Add a Column'
   154 'Add a Column'
   155 
   155 
       
   156 #addNonSelectableColumn
       
   157 'Add a Non-Selectable Column'
       
   158 
   156 #fileLoad
   159 #fileLoad
   157 'Load Column Description from Method'
   160 'Load Column Description from Method'
   158 
   161 
   159 #fileNew
   162 #fileNew
   160 'New Column Description'
   163 'New Column Description'
   193     ^ super helpSpec addPairsFrom:#(
   196     ^ super helpSpec addPairsFrom:#(
   194 
   197 
   195 #addColumn
   198 #addColumn
   196 'Adds a new column.'
   199 'Adds a new column.'
   197 
   200 
       
   201 #addNonSelectableColumn
       
   202 'Adds a new non-selectable column.'
       
   203 
   198 #basicsEditor
   204 #basicsEditor
   199 'Default widget type or a selector returning an instance of a user defined widget opened in the cell.'
   205 'Default widget type or a selector returning an instance of a user defined widget opened in the cell.'
   200 
   206 
   201 #basicsFont
   207 #basicsFont
   202 'Sets the font of the labeled text.'
   208 'Sets the font of the labeled text.'
   370      the ImageEditor may not be able to read the specification."
   376      the ImageEditor may not be able to read the specification."
   371 
   377 
   372     "
   378     "
   373      self newColumnIcon inspect
   379      self newColumnIcon inspect
   374      ImageEditor openOnClass:self andSelector:#newColumnIcon
   380      ImageEditor openOnClass:self andSelector:#newColumnIcon
       
   381      Icon flushCachedIcons
   375     "
   382     "
   376 
   383 
   377     <resource: #image>
   384     <resource: #image>
   378 
   385 
   379     ^Icon
   386     ^Icon
   380         constantNamed:#'DataSetBuilder newColumnIcon'
   387         constantNamed:#'DataSetBuilder class newColumnIcon'
   381         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UT@@@@UPUTUUUXUPUTZ**,UPUTZB",UPUTX*H,UYUTX*H,UPUTZB",UPQTZ**,UPUTX*H,UPUTX*H,UPUTX*H,UPUTXB@,UPUTZ**,UPUTZ**,UPUTX"H,UYUTXB@,UPUTX"@,UPUTX"H,UPUTZ**,UPUTZ**,UPUT/??<UPUT@@@@UP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A??@A??@A??@A??@A??@A??@A??@A??@A??CA??@A??@A??@A??@A??CA??AA??@A??CA??@A??CA??@A??@A??A') ; yourself); yourself]
   388         ifAbsentPut:[(Depth2Image new) width: 19; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
       
   389 U@@@@EQTUUUXUEQ***1TUF (+EQTX*H,UEQ"("1TUF (+EQTZ**,UEQ"("1TUFJ"KEQTX*H,UEQ HB1TUF**+EQTZ**,UEQ"H"1TUF@ KEQTX"@,UEQ"H"1T
       
   390 UF**+EQTZ**,UER???1TU@@@@EPb') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 19; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@') ; yourself); yourself]
       
   391 !
       
   392 
       
   393 newColumnNonSelectableIcon
       
   394     "This resource specification was automatically generated
       
   395      by the ImageEditor of ST/X."
       
   396 
       
   397     "Do not manually edit this!! If it is corrupted,
       
   398      the ImageEditor may not be able to read the specification."
       
   399 
       
   400     "
       
   401      self newColumnNonSelectableIcon inspect
       
   402      ImageEditor openOnClass:self andSelector:#newColumnNonSelectableIcon
       
   403      Icon flushCachedIcons
       
   404     "
       
   405 
       
   406     <resource: #image>
       
   407 
       
   408     ^Icon
       
   409         constantNamed:#'DataSetBuilder class newColumnNonSelectableIcon'
       
   410         ifAbsentPut:[(Depth2Image new) width: 19; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
       
   411 U@@@@EQTUUUXUEQ***1TUF**+EQTX*(,UEQ"*"1TUFB(KEQTZJ",UEQ(HJ1TUF("+EQTZ J,UEQ*@*1TUF("+EQTZBB,UEQ(*J1TUFB(KEQTX*(,UEQ"*"1T
       
   412 UF**+EQTZ**,UER???1TU@@@@EPb') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 19; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@G?<@') ; yourself); yourself]
   382 ! !
   413 ! !
   383 
   414 
   384 !DataSetBuilder class methodsFor:'interface specs'!
   415 !DataSetBuilder class methodsFor:'interface specs'!
   385 
   416 
   386 basicsEditSpec
   417 basicsEditSpec
  1010            (FramedBoxSpec
  1041            (FramedBoxSpec
  1011               label: 'Input Format'
  1042               label: 'Input Format'
  1012               name: 'framedBox1'
  1043               name: 'framedBox1'
  1013               layout: (LayoutFrame 0 0.0 3 0 0 1.0 149 0)
  1044               layout: (LayoutFrame 0 0.0 3 0 0 1.0 149 0)
  1014               labelPosition: topLeft
  1045               labelPosition: topLeft
  1015                     translateLabel: true
  1046               translateLabel: true
  1016               component: 
  1047               component: 
  1017              (SpecCollection
  1048              (SpecCollection
  1018                 collection: (
  1049                 collection: (
  1019                  (LabelSpec
  1050                  (LabelSpec
  1020                     label: 'Input Type:'
  1051                     label: 'Input Type:'
  1027                     name: 'typeCombo'
  1058                     name: 'typeCombo'
  1028                     layout: (LayoutFrame 118 0 15 0 3 1.0 37 0)
  1059                     layout: (LayoutFrame 118 0 15 0 3 1.0 37 0)
  1029                     activeHelpKey: formatInputType
  1060                     activeHelpKey: formatInputType
  1030                     tabable: true
  1061                     tabable: true
  1031                     model: type
  1062                     model: type
  1032                     comboList: 
  1063                     comboList: possiblePrintConverterTypes
  1033                    (Array string
       
  1034                       password number
       
  1035                       numberOrNil symbolOrNil
       
  1036                     )
       
  1037                     useIndex: false
  1064                     useIndex: false
  1038                     hidePullDownMenuButton: false
  1065                     hidePullDownMenuButton: false
  1039                   )
  1066                   )
  1040                  (LabelSpec
  1067                  (LabelSpec
  1041                     label: 'Max Size:'
  1068                     label: 'Max Size:'
  1088                     layout: (LayoutFrame 118 0 92 0 3 1.0 114 0)
  1115                     layout: (LayoutFrame 118 0 92 0 3 1.0 114 0)
  1089                     activeHelpKey: formatTextFormat
  1116                     activeHelpKey: formatTextFormat
  1090                     tabable: true
  1117                     tabable: true
  1091                     model: formatSelector
  1118                     model: formatSelector
  1092                     group: inputGroup
  1119                     group: inputGroup
  1093                     formatString: ''
       
  1094                     acceptOnLostFocus: false
  1120                     acceptOnLostFocus: false
  1095                     acceptChannel: acceptChannel
  1121                     acceptChannel: acceptChannel
  1096                     modifiedChannel: modifiedChannel
  1122                     modifiedChannel: modifiedChannel
  1097                     acceptOnPointerLeave: false
  1123                     acceptOnPointerLeave: false
  1098                   )
  1124                   )
  1843                     component: 
  1869                     component: 
  1844                    (SpecCollection
  1870                    (SpecCollection
  1845                       collection: (
  1871                       collection: (
  1846                        (DataSetSpec
  1872                        (DataSetSpec
  1847                           name: 'columnView'
  1873                           name: 'columnView'
  1848                           layout: (LayoutFrame 2 0.0 6 0.0 2 1.0 6 1.0)
  1874                           layout: (LayoutFrame 0 0.0 6 0.0 0 1.0 2 1.0)
  1849                           hasHorizontalScrollBar: true
  1875                           hasHorizontalScrollBar: true
  1850                           hasVerticalScrollBar: false
  1876                           hasVerticalScrollBar: false
  1851                           miniScrollerHorizontal: true
  1877                           miniScrollerHorizontal: true
  1852                           useIndex: false
  1878                           useIndex: false
  1853                           has3Dseparators: true
  1879                           has3Dseparators: true
  1874                                 model: selectedColumnModel
  1900                                 model: selectedColumnModel
  1875                                 menu: menuEdit
  1901                                 menu: menuEdit
  1876                                 hasHorizontalScrollBar: true
  1902                                 hasHorizontalScrollBar: true
  1877                                 hasVerticalScrollBar: true
  1903                                 hasVerticalScrollBar: true
  1878                                 miniScrollerHorizontal: true
  1904                                 miniScrollerHorizontal: true
       
  1905                                 isMultiSelect: true
  1879                                 useIndex: true
  1906                                 useIndex: true
  1880                                 sequenceList: seqList
  1907                                 sequenceList: seqList
  1881                               )
  1908                               )
  1882                              )
  1909                              )
  1883                            
  1910                            
  1884                           )
  1911                           )
       
  1912                           postBuildCallback: postBuildListOfItemsView:
  1885                         )
  1913                         )
  1886                        (ViewSpec
  1914                        (ViewSpec
  1887                           name: 'specView'
  1915                           name: 'specView'
  1888                           level: -1
  1916                           level: -1
  1889                           component: 
  1917                           component: 
  1906                                 minorKey: windowSpecForCommit
  1934                                 minorKey: windowSpecForCommit
  1907                               )
  1935                               )
  1908                              )
  1936                              )
  1909                            
  1937                            
  1910                           )
  1938                           )
       
  1939                           postBuildCallback: postBuildSpecView:
  1911                         )
  1940                         )
  1912                        )
  1941                        )
  1913                      
  1942                      
  1914                     )
  1943                     )
  1915                     handles: (Any 0.235387 1.0)
  1944                     handles: (Any 0.235387 1.0)
  2023             )
  2052             )
  2024           )
  2053           )
  2025          (MenuItem
  2054          (MenuItem
  2026             label: 'Edit'
  2055             label: 'Edit'
  2027             translateLabel: true
  2056             translateLabel: true
  2028             submenuChannel: menuEdit
  2057             submenuChannel: menuEditWithoutAccelerators
  2029           )
  2058           )
  2030          (MenuItem
  2059          (MenuItem
  2031             label: 'Add'
  2060             label: 'Add'
  2032             translateLabel: true
  2061             translateLabel: true
  2033             submenu: 
  2062             submenu: 
  2038                   enabled: columnIsNotEditing
  2067                   enabled: columnIsNotEditing
  2039                   label: 'Column'
  2068                   label: 'Column'
  2040                   itemValue: doCreateColumn
  2069                   itemValue: doCreateColumn
  2041                   translateLabel: true
  2070                   translateLabel: true
  2042                   labelImage: (ResourceRetriever nil newColumnIcon 'Column')
  2071                   labelImage: (ResourceRetriever nil newColumnIcon 'Column')
       
  2072                 )
       
  2073                (MenuItem
       
  2074                   activeHelpKey: addNonSelectableColumn
       
  2075                   enabled: columnIsNotEditing
       
  2076                   label: 'Column (Non-Selectable)'
       
  2077                   itemValue: doCreateNonSelectableColumn
       
  2078                   translateLabel: true
       
  2079                   labelImage: (ResourceRetriever DataSetBuilder newColumnNonSelectableIcon 'Column (Non-Selectable)')
  2043                 )
  2080                 )
  2044                )
  2081                )
  2045               nil
  2082               nil
  2046               nil
  2083               nil
  2047             )
  2084             )
  2083             translateLabel: true
  2120             translateLabel: true
  2084             isVisible: isStandAlone
  2121             isVisible: isStandAlone
  2085             submenuChannel: menuHistory
  2122             submenuChannel: menuHistory
  2086           )
  2123           )
  2087          (MenuItem
  2124          (MenuItem
  2088             label: 'Help'
  2125             label: 'MENU_Help'
  2089             translateLabel: true
  2126             translateLabel: true
  2090             startGroup: conditionalRight
  2127             startGroup: conditionalRight
  2091             submenuChannel: menuHelp
  2128             submenuChannel: menuHelp
  2092           )
  2129           )
  2093          )
  2130          )
  2108      (Menu new fromLiteralArrayEncoding:(DataSetBuilder menuEdit)) startUp
  2145      (Menu new fromLiteralArrayEncoding:(DataSetBuilder menuEdit)) startUp
  2109     "
  2146     "
  2110 
  2147 
  2111     <resource: #menu>
  2148     <resource: #menu>
  2112 
  2149 
  2113     ^
  2150     ^ 
  2114      
  2151      #(Menu
  2115        #(#Menu
  2152         (
  2116           
  2153          (MenuItem
  2117            #(
  2154             activeHelpKey: editCut
  2118              #(#MenuItem
  2155             enabled: isColumnSelected
  2119                 #label: 'Cut'
  2156             label: 'Cut'
  2120                 #translateLabel: true
  2157             itemValue: doCut
  2121                 #value: #doCut
  2158             translateLabel: true
  2122                 #activeHelpKey: #editCut
  2159             shortcutKey: Cut
  2123                 #enabled: #isColumnSelected
  2160           )
       
  2161          (MenuItem
       
  2162             activeHelpKey: editCopy
       
  2163             enabled: isColumnSelected
       
  2164             label: 'Copy'
       
  2165             itemValue: doCopy
       
  2166             translateLabel: true
       
  2167             shortcutKey: Copy
       
  2168           )
       
  2169          (MenuItem
       
  2170             activeHelpKey: editPaste
       
  2171             enabled: valueOfHavingClipboard
       
  2172             label: 'Paste'
       
  2173             itemValue: doPaste
       
  2174             translateLabel: true
       
  2175             shortcutKey: Paste
       
  2176           )
       
  2177          (MenuItem
       
  2178             label: '-'
       
  2179           )
       
  2180          (MenuItem
       
  2181             activeHelpKey: editMoveUp
       
  2182             enabled: isColumnSelected
       
  2183             label: 'Move Up'
       
  2184             itemValue: doMoveColumn:
       
  2185             translateLabel: true
       
  2186             shortcutKey: CtrlCursorUp
       
  2187             labelImage: (ResourceRetriever Icon upIcon 'Move Up')
       
  2188             argument: up
       
  2189           )
       
  2190          (MenuItem
       
  2191             activeHelpKey: editMoveDown
       
  2192             enabled: isColumnSelected
       
  2193             label: 'Move Down'
       
  2194             itemValue: doMoveColumn:
       
  2195             translateLabel: true
       
  2196             shortcutKey: CtrlCursorDown
       
  2197             labelImage: (ResourceRetriever Icon downIcon 'Move Down')
       
  2198             argument: down
       
  2199           )
       
  2200          (MenuItem
       
  2201             label: '-'
       
  2202           )
       
  2203          (MenuItem
       
  2204             label: 'Separators'
       
  2205             translateLabel: true
       
  2206             submenu: 
       
  2207            (Menu
       
  2208               (
       
  2209                (MenuItem
       
  2210                   label: 'Label Columns'
       
  2211                   translateLabel: true
       
  2212                   submenu: 
       
  2213                  (Menu
       
  2214                     (
       
  2215                      (MenuItem
       
  2216                         enabled: hasSelection
       
  2217                         label: 'Add Separators'
       
  2218                         itemValue: addLabelColumnSeparators
       
  2219                         translateLabel: true
       
  2220                       )
       
  2221                      (MenuItem
       
  2222                         enabled: hasSelection
       
  2223                         label: 'Remove Separators'
       
  2224                         itemValue: removeLabelColumnSeparators
       
  2225                         translateLabel: true
       
  2226                       )
       
  2227                      )
       
  2228                     nil
       
  2229                     nil
       
  2230                   )
       
  2231                 )
       
  2232                (MenuItem
       
  2233                   label: 'Label Row && Columns'
       
  2234                   translateLabel: true
       
  2235                   submenu: 
       
  2236                  (Menu
       
  2237                     (
       
  2238                      (MenuItem
       
  2239                         enabled: hasSelection
       
  2240                         label: 'Add Separators'
       
  2241                         itemValue: addLabelSeparators
       
  2242                         translateLabel: true
       
  2243                       )
       
  2244                      (MenuItem
       
  2245                         enabled: hasSelection
       
  2246                         label: 'Remove Separators'
       
  2247                         itemValue: removeLabelSeparators
       
  2248                         translateLabel: true
       
  2249                       )
       
  2250                      )
       
  2251                     nil
       
  2252                     nil
       
  2253                   )
       
  2254                 )
       
  2255                (MenuItem
       
  2256                   label: '-'
       
  2257                 )
       
  2258                (MenuItem
       
  2259                   label: 'Cell Rows'
       
  2260                   translateLabel: true
       
  2261                   submenu: 
       
  2262                  (Menu
       
  2263                     (
       
  2264                      (MenuItem
       
  2265                         enabled: hasSelection
       
  2266                         label: 'Add Separators'
       
  2267                         itemValue: addRowSeparators
       
  2268                         translateLabel: true
       
  2269                       )
       
  2270                      (MenuItem
       
  2271                         enabled: hasSelection
       
  2272                         label: 'Remove Separators'
       
  2273                         itemValue: removeRowSeparators
       
  2274                         translateLabel: true
       
  2275                       )
       
  2276                      )
       
  2277                     nil
       
  2278                     nil
       
  2279                   )
       
  2280                 )
       
  2281                (MenuItem
       
  2282                   label: 'Cell Columns'
       
  2283                   translateLabel: true
       
  2284                   submenu: 
       
  2285                  (Menu
       
  2286                     (
       
  2287                      (MenuItem
       
  2288                         enabled: hasSelection
       
  2289                         label: 'Add Separators'
       
  2290                         itemValue: addLabelColumnSeparators
       
  2291                         translateLabel: true
       
  2292                       )
       
  2293                      (MenuItem
       
  2294                         enabled: hasSelection
       
  2295                         label: 'Remove'
       
  2296                         itemValue: removeLabelColumnSeparators
       
  2297                         translateLabel: true
       
  2298                       )
       
  2299                      )
       
  2300                     nil
       
  2301                     nil
       
  2302                   )
       
  2303                 )
       
  2304                (MenuItem
       
  2305                   label: 'Cell Rows && Columns'
       
  2306                   translateLabel: true
       
  2307                   submenu: 
       
  2308                  (Menu
       
  2309                     (
       
  2310                      (MenuItem
       
  2311                         enabled: hasSelection
       
  2312                         label: 'Add Separators'
       
  2313                         itemValue: addCellSeparators
       
  2314                         translateLabel: true
       
  2315                       )
       
  2316                      (MenuItem
       
  2317                         enabled: hasSelection
       
  2318                         label: 'Remove Separators'
       
  2319                         itemValue: removeCellSeparators
       
  2320                         translateLabel: true
       
  2321                       )
       
  2322                      )
       
  2323                     nil
       
  2324                     nil
       
  2325                   )
       
  2326                 )
       
  2327                )
       
  2328               nil
       
  2329               nil
  2124             )
  2330             )
  2125              #(#MenuItem
  2331           )
  2126                 #label: 'Copy'
  2332          (MenuItem
  2127                 #translateLabel: true
  2333             label: 'Alignment'
  2128                 #value: #doCopy
  2334             translateLabel: true
  2129                 #activeHelpKey: #editCopy
  2335             submenu: 
  2130                 #enabled: #isColumnSelected
  2336            (Menu
       
  2337               (
       
  2338                (MenuItem
       
  2339                   enabled: hasSelection
       
  2340                   label: 'Make Labels Left Aligned'
       
  2341                   itemValue: alignLabelsLeft
       
  2342                   translateLabel: true
       
  2343                 )
       
  2344                (MenuItem
       
  2345                   enabled: hasSelection
       
  2346                   label: 'Make Labels Centered'
       
  2347                   itemValue: alignLabelsCentered
       
  2348                   translateLabel: true
       
  2349                 )
       
  2350                (MenuItem
       
  2351                   enabled: hasSelection
       
  2352                   label: 'Make Labels Right Aligned'
       
  2353                   itemValue: alignLabelsRight
       
  2354                   translateLabel: true
       
  2355                 )
       
  2356                (MenuItem
       
  2357                   label: '-'
       
  2358                 )
       
  2359                (MenuItem
       
  2360                   enabled: hasSelection
       
  2361                   label: 'Make Cell Left Aligned'
       
  2362                   itemValue: alignColumnsLeft
       
  2363                   translateLabel: true
       
  2364                 )
       
  2365                (MenuItem
       
  2366                   enabled: hasSelection
       
  2367                   label: 'Make Cell Centered'
       
  2368                   itemValue: alignColumnsCentered
       
  2369                   translateLabel: true
       
  2370                 )
       
  2371                (MenuItem
       
  2372                   enabled: hasSelection
       
  2373                   label: 'Make Cell Right Aligned'
       
  2374                   itemValue: alignColumnsRight
       
  2375                   translateLabel: true
       
  2376                 )
       
  2377                )
       
  2378               nil
       
  2379               nil
  2131             )
  2380             )
  2132              #(#MenuItem
  2381           )
  2133                 #label: 'Paste'
  2382          (MenuItem
  2134                 #translateLabel: true
  2383             label: '-'
  2135                 #value: #doPaste
  2384           )
  2136                 #activeHelpKey: #editPaste
  2385          (MenuItem
  2137                 #enabled: #valueOfHavingClipboard
  2386             enabled: hasSelection
  2138             )
  2387             label: 'Make Selectable'
  2139              #(#MenuItem
  2388             itemValue: makeColumnsSelectable
  2140                 #label: 'Delete'
  2389             translateLabel: true
  2141                 #translateLabel: true
  2390           )
  2142                 #value: #doDelete
  2391          (MenuItem
  2143                 #activeHelpKey: #editDelete
  2392             enabled: hasSelection
  2144                 #enabled: #valueOfHavingClipboard
  2393             label: 'Make Unselectable'
  2145             )
  2394             itemValue: makeColumnsUnselectable
  2146              #(#MenuItem
  2395             translateLabel: true
  2147                 #label: '-'
  2396           )
  2148             )
  2397          )
  2149              #(#MenuItem
  2398         nil
  2150                 #label: 'Move Up'
  2399         nil
  2151                 #translateLabel: true
       
  2152                 #value: #doMoveColumn:
       
  2153                 #activeHelpKey: #editMoveUp
       
  2154                 #enabled: #isColumnSelected
       
  2155                 #argument: #up
       
  2156                 #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up')
       
  2157             )
       
  2158              #(#MenuItem
       
  2159                 #label: 'Move Down'
       
  2160                 #translateLabel: true
       
  2161                 #value: #doMoveColumn:
       
  2162                 #activeHelpKey: #editMoveDown
       
  2163                 #enabled: #isColumnSelected
       
  2164                 #argument: #down
       
  2165                 #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down')
       
  2166             )
       
  2167           ) nil
       
  2168           nil
       
  2169       )
  2400       )
       
  2401 !
       
  2402 
       
  2403 menuEditWithoutAccelerators
       
  2404     ^ self menuEdit decodeAsLiteralArray
       
  2405         allItemsDo:[:i | i shortcutKey:nil]
  2170 !
  2406 !
  2171 
  2407 
  2172 menuToolbar
  2408 menuToolbar
  2173     "This resource specification was automatically generated
  2409     "This resource specification was automatically generated
  2174      by the MenuEditor of ST/X."
  2410      by the MenuEditor of ST/X."
  2191             label: 'New'
  2427             label: 'New'
  2192             itemValue: doNew
  2428             itemValue: doNew
  2193             translateLabel: true
  2429             translateLabel: true
  2194             isButton: true
  2430             isButton: true
  2195             labelImage: (ResourceRetriever ToolbarIconLibrary newDataSetIcon)
  2431             labelImage: (ResourceRetriever ToolbarIconLibrary newDataSetIcon)
       
  2432           )
       
  2433          (MenuItem
       
  2434             label: '-'
  2196           )
  2435           )
  2197          (MenuItem
  2436          (MenuItem
  2198             activeHelpKey: fileLoad
  2437             activeHelpKey: fileLoad
  2199             label: 'Load'
  2438             label: 'Load'
  2200             itemValue: doLoad
  2439             itemValue: doLoad
  2262             translateLabel: true
  2501             translateLabel: true
  2263             isButton: true
  2502             isButton: true
  2264             labelImage: (ResourceRetriever nil newColumnIcon)
  2503             labelImage: (ResourceRetriever nil newColumnIcon)
  2265           )
  2504           )
  2266          (MenuItem
  2505          (MenuItem
  2267             label: '-'
  2506             activeHelpKey: addNonSelectableColumn
       
  2507             enabled: columnIsNotEditing
       
  2508             label: 'Add Column (Non Selectable)'
       
  2509             itemValue: doCreateNonSelectableColumn
       
  2510             translateLabel: true
       
  2511             isButton: true
       
  2512             labelImage: (ResourceRetriever DataSetBuilder newColumnNonSelectableIcon)
       
  2513           )
       
  2514          (MenuItem
       
  2515             label: ''
  2268           )
  2516           )
  2269          (MenuItem
  2517          (MenuItem
  2270             activeHelpKey: editMoveUp
  2518             activeHelpKey: editMoveUp
  2271             enabled: isColumnSelected
  2519             enabled: isColumnSelected
  2272             label: 'Move Up'
  2520             label: 'Move Up'
  2273             itemValue: doMoveColumn:
  2521             itemValue: doMoveColumn:
  2274             translateLabel: true
  2522             translateLabel: true
  2275             isButton: true
  2523             isButton: true
       
  2524             startGroup: right
  2276             labelImage: (ResourceRetriever Icon upIcon)
  2525             labelImage: (ResourceRetriever Icon upIcon)
  2277             argument: up
  2526             argument: up
  2278           )
  2527           )
  2279          (MenuItem
  2528          (MenuItem
  2280             activeHelpKey: editMoveDown
  2529             activeHelpKey: editMoveDown
  2281             enabled: isColumnSelected
  2530             enabled: isColumnSelected
  2282             label: 'Move Down'
  2531             label: 'Move Down'
  2283             itemValue: doMoveColumn:
  2532             itemValue: doMoveColumn:
  2284             translateLabel: true
  2533             translateLabel: true
  2285             isButton: true
  2534             isButton: true
       
  2535             startGroup: right
  2286             labelImage: (ResourceRetriever Icon downIcon)
  2536             labelImage: (ResourceRetriever Icon downIcon)
  2287             argument: down
  2537             argument: down
  2288           )
  2538           )
  2289          )
  2539          )
  2290         nil
  2540         nil
  2363     ].
  2613     ].
  2364     ^ holder
  2614     ^ holder
  2365 !
  2615 !
  2366 
  2616 
  2367 columnIsNotEditing
  2617 columnIsNotEditing
  2368     "returns a boolean value holder which is set to true if column is not editing"
  2618     "returns a boolean value holder which returns true if a columns attributes have not
       
  2619      been modified (notebook fields)"
  2369 
  2620 
  2370     |holder|
  2621     |holder|
  2371 
  2622 
  2372     (holder := builder bindingAt:#columnIsNotEditing) isNil ifTrue:[
  2623     (holder := builder bindingAt:#columnIsNotEditing) isNil ifTrue:[
  2373         holder := BlockValue forLogicalNot:(self modifiedChannel).
  2624         holder := BlockValue forLogicalNot:(self modifiedChannel).
  2374         builder aspectAt:#columnIsNotEditing put:holder.
  2625         builder aspectAt:#columnIsNotEditing put:holder.
  2375     ].
  2626     ].
  2376     ^ holder
  2627     ^ holder
  2377 
       
  2378 !
  2628 !
  2379 
  2629 
  2380 editorTypeList
  2630 editorTypeList
  2381     "generate list of supported editor types"
  2631     "generate list of supported editor types"
  2382 
  2632 
  2388         builder aspectAt:#editorTypeList put:list
  2638         builder aspectAt:#editorTypeList put:list
  2389     ].
  2639     ].
  2390     ^list
  2640     ^list
  2391 !
  2641 !
  2392 
  2642 
       
  2643 hasColumns
       
  2644     "returns a boolean value holder which is set to true if there are any columns"
       
  2645 
       
  2646     ^ BlockValue
       
  2647         with:[:m | m notEmptyOrNil]
       
  2648         argument:(self seqList)
       
  2649 !
       
  2650 
       
  2651 hasSelection
       
  2652     ^ (selectedColumnIndex isCollection not and:[ selectedColumnIndex ~~ 0 ])
       
  2653     or:[ selectedColumnIndex size > 0 ]
       
  2654 !
       
  2655 
  2393 isColumnSelected
  2656 isColumnSelected
  2394     "returns a boolean value holder which is set to true if something is modified
  2657     "returns a boolean value holder which is set to true if some col is selected"
  2395      and not accepted"
       
  2396 
  2658 
  2397     ^builder valueAspectFor:#isColumnSelected initialValue: false
  2659     ^builder valueAspectFor:#isColumnSelected initialValue: false
  2398 
       
  2399 
       
  2400 
       
  2401 !
  2660 !
  2402 
  2661 
  2403 menuEdit
  2662 menuEdit
  2404     "redefined to access my menu and not of the UIPainter
  2663     "redefined to access my menu and not of the UIPainter
  2405     "
  2664     "
  2406     ^ self class menuEdit
  2665     ^ self class menuEdit
       
  2666 !
       
  2667 
       
  2668 possiblePrintConverterTypes
       
  2669     ^ UISpecification possiblePrintConverterTypes
  2407 !
  2670 !
  2408 
  2671 
  2409 rendererTypeList
  2672 rendererTypeList
  2410     "generate list of supported renderer types"
  2673     "generate list of supported renderer types"
  2411 
  2674 
  2841             self compile:(bCode, code) forClass:aClass inCategory:catg
  3104             self compile:(bCode, code) forClass:aClass inCategory:catg
  2842         ]
  3105         ]
  2843     ]
  3106     ]
  2844 ! !
  3107 ! !
  2845 
  3108 
       
  3109 !DataSetBuilder methodsFor:'event handling'!
       
  3110 
       
  3111 processEvent:anEvent
       
  3112     "filter keyboard edit-events typed into the listOfItemsView.
       
  3113      Return true, if I have eaten the event"
       
  3114 
       
  3115     |evView inView rawKey key|
       
  3116 
       
  3117     anEvent isKeyPressEvent ifFalse:[^ false].
       
  3118 
       
  3119     evView := anEvent targetView.
       
  3120     evView isNil ifTrue:[ ^ false ].
       
  3121 
       
  3122     inView := evView isSameOrComponentOf:listOfItemsView.
       
  3123     inView ifTrue:[^ false].
       
  3124 
       
  3125     key    := anEvent key.
       
  3126     rawKey := anEvent rawKey.
       
  3127 
       
  3128     (    key == #Delete
       
  3129      or:[key == #BackSpace
       
  3130      or:[key == #Cut]]
       
  3131     ) ifTrue:[
       
  3132         self doCut.
       
  3133         ^ true.
       
  3134     ].
       
  3135 
       
  3136     key == #Copy  ifTrue:[ self doCopy.  ^ true ].
       
  3137     key == #Paste ifTrue:[ self doPaste. ^ true ].
       
  3138 
       
  3139     (rawKey == #CtrlCursorUp) ifTrue:[
       
  3140         self doMoveUp.
       
  3141         ^ true.
       
  3142     ].
       
  3143     (rawKey == #CtrlCursorDown) ifTrue:[
       
  3144         self doMoveDown.
       
  3145         ^ true.
       
  3146     ].
       
  3147 
       
  3148     ^ false.
       
  3149 ! !
       
  3150 
  2846 !DataSetBuilder methodsFor:'initialization'!
  3151 !DataSetBuilder methodsFor:'initialization'!
  2847 
  3152 
  2848 initialize
  3153 initialize
  2849     "initializes"
  3154     "initializes"
  2850 
  3155 
  2862 "/    aDataSetColumnSpec writeSelector: #'valueAtColumnIndex:put:'.
  3167 "/    aDataSetColumnSpec writeSelector: #'valueAtColumnIndex:put:'.
  2863 "/    aDataSetColumnSpec backgroundSelector: #'bgAtRowIndex:columnIndex:'.
  3168 "/    aDataSetColumnSpec backgroundSelector: #'bgAtRowIndex:columnIndex:'.
  2864 "/    aDataSetColumnSpec foregroundSelector: #'fgAtRowIndex:columnIndex:'.
  3169 "/    aDataSetColumnSpec foregroundSelector: #'fgAtRowIndex:columnIndex:'.
  2865 "/    aDataSetColumnSpec selectSelector: #'selectAtColumnIndex:'.
  3170 "/    aDataSetColumnSpec selectSelector: #'selectAtColumnIndex:'.
  2866 "/    aDataSetColumnSpec editorType: #InputField.
  3171 "/    aDataSetColumnSpec editorType: #InputField.
       
  3172 ! !
       
  3173 
       
  3174 !DataSetBuilder methodsFor:'operations'!
       
  3175 
       
  3176 addCellSeparators
       
  3177     self addRowSeparators.
       
  3178     self addColumnSeparators.
       
  3179 !
       
  3180 
       
  3181 addColumnSeparators
       
  3182     self selectedColumnsDo:[:eachColDescr |
       
  3183         eachColDescr showColSeparator:true
       
  3184     ].
       
  3185     self updateAfterOperation.
       
  3186 !
       
  3187 
       
  3188 addLabelColumnSeparators
       
  3189     self selectedColumnsDo:[:eachColDescr |
       
  3190         eachColDescr labelButtonType:#Button
       
  3191     ].
       
  3192     self updateAfterOperation.
       
  3193 !
       
  3194 
       
  3195 addLabelSeparators
       
  3196     self selectedColumnsDo:[:eachColDescr |
       
  3197         eachColDescr labelButtonType:#Button
       
  3198     ].
       
  3199     self updateAfterOperation.
       
  3200 !
       
  3201 
       
  3202 addRowSeparators
       
  3203     self selectedColumnsDo:[:eachColDescr |
       
  3204         eachColDescr showRowSeparator:true
       
  3205     ].
       
  3206     self updateAfterOperation.
       
  3207 !
       
  3208 
       
  3209 alignColumns:how
       
  3210     self selectedColumnsDo:[:eachColDescr |
       
  3211         eachColDescr columnAlignment:how
       
  3212     ].
       
  3213     self updateAfterOperation.
       
  3214 !
       
  3215 
       
  3216 alignColumnsCentered
       
  3217     self alignColumns:#centered
       
  3218 !
       
  3219 
       
  3220 alignColumnsLeft
       
  3221     self alignColumns:#left
       
  3222 !
       
  3223 
       
  3224 alignColumnsRight
       
  3225     self alignColumns:#right
       
  3226 !
       
  3227 
       
  3228 alignLabels:how
       
  3229     self selectedColumnsDo:[:eachColDescr |
       
  3230         eachColDescr labelAlignment:how
       
  3231     ].
       
  3232     self updateAfterOperation.
       
  3233 !
       
  3234 
       
  3235 alignLabelsCentered
       
  3236     self alignLabels:#centered
       
  3237 !
       
  3238 
       
  3239 alignLabelsLeft
       
  3240     self alignLabels:#left
       
  3241 !
       
  3242 
       
  3243 alignLabelsRight
       
  3244     self alignLabels:#right
       
  3245 !
       
  3246 
       
  3247 makeColumnsSelectable
       
  3248     self makeColumnsSelectable:true
       
  3249 !
       
  3250 
       
  3251 makeColumnsSelectable:aBoolean
       
  3252     self selectedColumnsDo:[:eachColDescr |
       
  3253         eachColDescr canSelect:aBoolean
       
  3254     ].
       
  3255     self updateAfterOperation.
       
  3256 !
       
  3257 
       
  3258 makeColumnsUnselectable
       
  3259     self makeColumnsSelectable:false
       
  3260 !
       
  3261 
       
  3262 removeCellSeparators
       
  3263     self removeRowSeparators.
       
  3264     self removeColumnSeparators.
       
  3265 !
       
  3266 
       
  3267 removeColumnSeparators
       
  3268     self selectedColumnsDo:[:eachColDescr |
       
  3269         eachColDescr showColSeparator:false
       
  3270     ].
       
  3271     self updateAfterOperation.
       
  3272 !
       
  3273 
       
  3274 removeLabelColumnSeparators
       
  3275     self selectedColumnsDo:[:eachColDescr |
       
  3276         eachColDescr labelButtonType:#Group
       
  3277     ].
       
  3278     self updateAfterOperation.
       
  3279 !
       
  3280 
       
  3281 removeLabelSeparators
       
  3282     self selectedColumnsDo:[:eachColDescr |
       
  3283         eachColDescr labelButtonType:#None
       
  3284     ].
       
  3285     self updateAfterOperation.
       
  3286 !
       
  3287 
       
  3288 removeRowSeparators
       
  3289     self selectedColumnsDo:[:eachColDescr |
       
  3290         eachColDescr showRowSeparator:false
       
  3291     ].
       
  3292     self updateAfterOperation.
       
  3293 !
       
  3294 
       
  3295 selectedColumnsDo:aBlock
       
  3296     selectedColumnIndex isCollection ifTrue:[
       
  3297         selectedColumnIndex do:[:idx | aBlock value:(columns at:idx)].
       
  3298     ] ifFalse:[
       
  3299         selectedColumnIndex ~~ 0 ifTrue:[
       
  3300             selectedColumnIndex notNil ifTrue:[
       
  3301                 aBlock value:(columns at:selectedColumnIndex)
       
  3302             ]
       
  3303         ].  
       
  3304     ].
       
  3305 !
       
  3306 
       
  3307 updateAfterOperation
       
  3308     self updateColumnView.
       
  3309     self updateInputFields.
       
  3310     self setModified.
  2867 ! !
  3311 ! !
  2868 
  3312 
  2869 !DataSetBuilder methodsFor:'private'!
  3313 !DataSetBuilder methodsFor:'private'!
  2870 
  3314 
  2871 labelFromColumn:aColumn
  3315 labelFromColumn:aColumn
  2963 !DataSetBuilder methodsFor:'selection'!
  3407 !DataSetBuilder methodsFor:'selection'!
  2964 
  3408 
  2965 selectedColumn
  3409 selectedColumn
  2966     "returns selected column or nil"
  3410     "returns selected column or nil"
  2967 
  3411 
       
  3412     selectedColumnIndex isCollection ifTrue:[
       
  3413         ^ selectedColumnIndex size == 1 
       
  3414             ifTrue:[ columns at:selectedColumnIndex first ]
       
  3415             ifFalse:[ nil ] 
       
  3416     ].
       
  3417 
  2968     ^selectedColumnIndex == 0 
  3418     ^selectedColumnIndex == 0 
  2969         ifFalse:[columns at:selectedColumnIndex ifAbsent: nil]
  3419         ifFalse:[columns at:selectedColumnIndex ifAbsent: nil]
  2970         ifTrue: [nil]
  3420         ifTrue: [nil]
  2971 !
  3421 !
  2972 
  3422 
  2975 
  3425 
  2976     ^selectedColumnIndex
  3426     ^selectedColumnIndex
  2977 !
  3427 !
  2978 
  3428 
  2979 selectedColumnIndex:something
  3429 selectedColumnIndex:something
  2980     "changes selected column and update specifications"
  3430     "changes selected column and updates specifications"
  2981 
  3431 
  2982     something == selectedColumnIndex ifFalse:[
  3432     something == selectedColumnIndex ifFalse:[
  2983         selectedColumnIndex := something ? 0.
  3433         selectedColumnIndex := something ? 0.
  2984         self isColumnSelected value: true
  3434         self isColumnSelected value: true
  2985     ].
  3435     ].
       
  3436 !
       
  3437 
       
  3438 selectedColumnIndices
       
  3439     "returns selected column indices or #()"
       
  3440 
       
  3441     selectedColumnIndex == 0 ifTrue:[ ^ #() ].
       
  3442     selectedColumnIndex isNumber ifTrue:[ ^ Array with:selectedColumnIndex ].
       
  3443     ^selectedColumnIndex
       
  3444 !
       
  3445 
       
  3446 selectedColumns
       
  3447     selectedColumnIndex isCollection ifTrue:[
       
  3448         ^ selectedColumnIndex collect:[:idx | columns at:idx] 
       
  3449     ].
       
  3450 
       
  3451     ^ selectedColumnIndex == 0 
       
  3452         ifFalse:[ Array with:(columns at:selectedColumnIndex) ]
       
  3453         ifTrue: [ #() ]
       
  3454 !
       
  3455 
       
  3456 singleSelectedColumnIndex
       
  3457     selectedColumnIndex isCollection ifTrue:[
       
  3458         ^ selectedColumnIndex size == 1 
       
  3459             ifTrue:[ selectedColumnIndex first ]
       
  3460             ifFalse:[ 0 ] 
       
  3461     ].
       
  3462 
       
  3463     ^ selectedColumnIndex
  2986 !
  3464 !
  2987 
  3465 
  2988 tabSelection:something
  3466 tabSelection:something
  2989     "changes selected tab and set corresponding specification"
  3467     "changes selected tab and set corresponding specification"
  2990 
  3468 
  3049 openModal
  3527 openModal
  3050     "sets the modalOpened flag, so later, 
  3528     "sets the modalOpened flag, so later, 
  3051      there is no need to ask for saving into a class"
  3529      there is no need to ask for saving into a class"
  3052 
  3530 
  3053     modalOpened := true.
  3531     modalOpened := true.
  3054 
       
  3055     super openModal
  3532     super openModal
  3056 
       
  3057 
       
  3058 !
  3533 !
  3059 
  3534 
  3060 openModalOnResourceSpec: aListSpec
  3535 openModalOnResourceSpec: aListSpec
  3061     "sets the modalOpened flag, so later, 
  3536     "sets the modalOpened flag, so later, 
  3062      there is no need to ask for saving into a class"
  3537      there is no need to ask for saving into a class"
  3065     super openModalOnResourceSpec: aListSpec
  3540     super openModalOnResourceSpec: aListSpec
  3066 
  3541 
  3067 
  3542 
  3068 !
  3543 !
  3069 
  3544 
       
  3545 postBuildListOfItemsView:aView
       
  3546     listOfItemsView := aView
       
  3547 !
       
  3548 
       
  3549 postBuildSpecView:aView
       
  3550     listOfItemsView := aView
       
  3551 !
       
  3552 
  3070 postOpenWith:aBuilder
  3553 postOpenWith:aBuilder
  3071     "reset keyboardProcessor for menuBar"
  3554     "reset keyboardProcessor for menuBar"
  3072 
  3555 
  3073     super postOpenWith: aBuilder.
  3556     super postOpenWith:aBuilder.
  3074     aBuilder keyboardProcessor menuBar:nil.
  3557     aBuilder keyboardProcessor menuBar:nil.
       
  3558     self windowGroup addPreEventHook:self.
  3075 ! !
  3559 ! !
  3076 
  3560 
  3077 !DataSetBuilder methodsFor:'user actions'!
  3561 !DataSetBuilder methodsFor:'user actions'!
  3078 
  3562 
  3079 accept
  3563 accept
  3098         ]
  3582         ]
  3099     ].
  3583     ].
  3100     aspects keysAndValuesDo:[:aKey :aModel| 
  3584     aspects keysAndValuesDo:[:aKey :aModel| 
  3101         column perform:(aKey , ':') asSymbol with: aModel value
  3585         column perform:(aKey , ':') asSymbol with: aModel value
  3102     ].
  3586     ].
  3103     self seqList at:selectedColumnIndex put:(self labelFromColumn:column).
  3587     self seqList at:self singleSelectedColumnIndex put:(self labelFromColumn:column).
  3104     self updateColumnView.
  3588     self updateColumnView.
  3105     self cancel.
  3589     self cancel.
  3106     self clearModified.
  3590     self clearModified.
  3107 !
  3591 !
  3108 
  3592 
  3118 !
  3602 !
  3119 
  3603 
  3120 cutOrDelete:isCut
  3604 cutOrDelete:isCut
  3121     "remove selected column and optionally put it to the clipboard"
  3605     "remove selected column and optionally put it to the clipboard"
  3122 
  3606 
  3123     |idx model|
  3607     |indices selectionModel|
  3124 
  3608 
  3125     ((idx := selectedColumnIndex) ~~ 0 and:[self askForItemModification]) ifFalse:[
  3609     ((indices := self selectedColumnIndices) notEmpty and:[self askForItemModification]) ifFalse:[
  3126         ^ self
  3610         ^ self
  3127     ].
  3611     ].
  3128     model := self selectedColumnModel.
       
  3129     model value:0.
       
  3130 
       
  3131     isCut ifTrue:[
  3612     isCut ifTrue:[
  3132         self clipboard: (columns at: idx)
  3613         self clipboard: (self selectedColumns)
  3133     ].
  3614     ].
  3134     columns removeIndex:idx.
  3615 
  3135 
  3616     selectionModel := self selectedColumnModel.
  3136     self  seqList removeIndex:idx.
  3617     selectionModel value:0.
  3137     model value:(idx min:(columns size)).
  3618 
  3138     self  updateColumnView.
  3619     indices sort reverseDo:[:idx |
  3139     self  updateInputFields.
  3620         columns removeIndex:idx.
       
  3621         self seqList removeIndex:idx.
       
  3622     ].
       
  3623 
       
  3624     selectionModel value:((indices max) min:(columns size)).
       
  3625     self updateColumnView.
       
  3626     self updateInputFields.
  3140 
  3627 
  3141     columns isEmpty ifTrue:[
  3628     columns isEmpty ifTrue:[
  3142         self isColumnSelected value: false
  3629         self isColumnSelected value: false
  3143     ].
  3630     ].
  3144     self cancel.
  3631     self cancel.
       
  3632     self setModified.
       
  3633 !
       
  3634 
       
  3635 doAddColumn:descr
       
  3636     "adds a new column after the selected column or at the left (if nothing is selected)"
       
  3637 
       
  3638     columns add:descr afterIndex:self singleSelectedColumnIndex.
       
  3639     self setDefaultValuesInNewColumn:descr.
       
  3640     self seqList add:(descr label) afterIndex:self singleSelectedColumnIndex.
       
  3641     self enablingCommitButtonsHolder value ifFalse:[
       
  3642         self selectedColumnModel value:self singleSelectedColumnIndex + 1
       
  3643     ].
       
  3644     self cancel.
       
  3645     self updateColumnView.
  3145     self setModified.
  3646     self setModified.
  3146 !
  3647 !
  3147 
  3648 
  3148 doBrowseRowClass
  3649 doBrowseRowClass
  3149     "browse class of columns spec"
  3650     "browse class of columns spec"
  3156 
  3657 
  3157     "Modified: / 20.5.1998 / 03:48:04 / cg"
  3658     "Modified: / 20.5.1998 / 03:48:04 / cg"
  3158 !
  3659 !
  3159 
  3660 
  3160 doCopy
  3661 doCopy
  3161     "copy selected column to the clipboard"
  3662     "copy selected columns to the clipboard"
  3162 
  3663 
  3163     |idx|
  3664     |cols|
  3164 
  3665 
  3165     (idx := selectedColumnIndex) ~~ 0 
  3666     cols := self selectedColumns.
  3166     ifTrue:
  3667     cols notEmptyOrNil ifTrue:[
  3167     [
  3668         self clipboard:(cols deepCopy)
  3168         self clipboard: (columns at: idx) deepCopy
       
  3169     ]
  3669     ]
  3170 !
  3670 !
  3171 
  3671 
  3172 doCreateColumn
  3672 doCreateColumn
  3173     "create a new column after selected column or at left (nothing selected)"
  3673     "create a new column after selected column or at left (nothing selected)"
  3174 
  3674 
  3175     |label list dscs |
  3675     |label list dscs descr|
  3176 
  3676 
  3177     list := self seqList.
  3677 "/    list := self seqList.
  3178     label := 'Column ', (list size + 1) printString.
  3678 "/    label := 'Column ', (list size + 1) printString.
  3179     columns add:(dscs := DataSetColumnSpec label:label selector:nil) afterIndex:selectedColumnIndex.
  3679 "/    columns add:(dscs := DataSetColumnSpec label:label selector:nil) afterIndex:selectedColumnIndex.
  3180     self setDefaultValuesInNewColumn:dscs.
  3680 "/    self setDefaultValuesInNewColumn:dscs.
  3181     self seqList add:label afterIndex:selectedColumnIndex.
  3681 "/    self seqList add:label afterIndex:selectedColumnIndex.
  3182     self enablingCommitButtonsHolder value ifFalse:[
  3682 "/    self enablingCommitButtonsHolder value ifFalse:[
  3183         self selectedColumnModel value:selectedColumnIndex + 1
  3683 "/        self selectedColumnModel value:selectedColumnIndex + 1
  3184     ].
  3684 "/    ].
  3185     self cancel.
  3685 "/    self cancel.
  3186     self updateColumnView.
  3686 "/    self updateColumnView.
  3187     self setModified.
  3687 "/    self setModified.
       
  3688 "/
       
  3689 
       
  3690     label := 'Column ', (self seqList size + 1) printString.
       
  3691     descr := DataSetColumnSpec label:label selector:nil.
       
  3692     self doAddColumn:descr
       
  3693 !
       
  3694 
       
  3695 doCreateNonSelectableColumn
       
  3696     "create a new column after selected column or at left (nothing selected)"
       
  3697 
       
  3698     |label list dscs descr|
       
  3699 
       
  3700 "/    list := self seqList.
       
  3701 "/    label := 'Column ', (list size + 1) printString.
       
  3702 "/    columns add:(dscs := DataSetColumnSpec label:label selector:nil) afterIndex:selectedColumnIndex.
       
  3703 "/    self setDefaultValuesInNewColumn:dscs.
       
  3704 "/    self seqList add:label afterIndex:selectedColumnIndex.
       
  3705 "/    self enablingCommitButtonsHolder value ifFalse:[
       
  3706 "/        self selectedColumnModel value:selectedColumnIndex + 1
       
  3707 "/    ].
       
  3708 "/    self cancel.
       
  3709 "/    self updateColumnView.
       
  3710 "/    self setModified.
       
  3711 "/
       
  3712 
       
  3713     label := 'Column ', (self seqList size + 1) printString.
       
  3714     descr := DataSetColumnSpec label:label selector:nil.
       
  3715     descr canSelect:false.
       
  3716     self doAddColumn:descr
  3188 !
  3717 !
  3189 
  3718 
  3190 doCut
  3719 doCut
  3191     "remove selected column and put it to the clipboard"
  3720     "remove selected column and put it to the clipboard"
  3192 
  3721 
  3313 doMoveColumn:upOrDown
  3842 doMoveColumn:upOrDown
  3314     "move selected column up or down"
  3843     "move selected column up or down"
  3315 
  3844 
  3316     |idx list label col size|
  3845     |idx list label col size|
  3317 
  3846 
  3318     (idx := selectedColumnIndex) == 0 ifTrue:[^self].
  3847     (idx := self singleSelectedColumnIndex) == 0 ifTrue:[^self].
  3319     list := self seqList.
  3848     list := self seqList.
  3320     size := list size.
  3849     size := list size.
  3321 
  3850 
  3322     size == 1 ifTrue:[^self].
  3851     size == 1 ifTrue:[^self].
  3323     selectedColumnIndex := 0.
  3852     selectedColumnIndex := 0.
  3324     label := list at:idx.
  3853     label := list at:idx.
  3325     col   := columns at:idx.
  3854     col   := columns at:idx.
  3326     list    removeIndex:idx.
  3855     list    removeIndex:idx.
  3327     columns removeIndex:idx.
  3856     columns removeIndex:idx.
  3328 
  3857 
  3329     upOrDown == #up 
  3858     upOrDown == #up ifTrue:[
  3330     ifTrue:
       
  3331     [
       
  3332         idx == 1 ifTrue:[idx := size]
  3859         idx == 1 ifTrue:[idx := size]
  3333                 ifFalse:[idx := idx - 1]
  3860                 ifFalse:[idx := idx - 1]
  3334     ] 
  3861     ] ifFalse:[
  3335     ifFalse:
       
  3336     [
       
  3337         idx == size ifTrue:[idx := 1]
  3862         idx == size ifTrue:[idx := 1]
  3338                    ifFalse:[idx := idx + 1]
  3863                    ifFalse:[idx := idx + 1]
  3339     ].
  3864     ].
  3340     columns add:col   beforeIndex:idx.
  3865     columns add:col   beforeIndex:idx.
  3341     list    add:label beforeIndex:idx.  
  3866     list    add:label beforeIndex:idx.  
  3342     self selectedColumnModel value:idx.
  3867     self selectedColumnModel value:idx.
  3343     self updateColumnView.
  3868     self updateColumnView.
  3344     self setModified.
  3869     self setModified.
  3345 !
  3870 !
  3346 
  3871 
       
  3872 doMoveDown
       
  3873     self doMoveColumn:#down
       
  3874 !
       
  3875 
       
  3876 doMoveUp
       
  3877     self doMoveColumn:#up
       
  3878 !
       
  3879 
  3347 doPaste
  3880 doPaste
  3348     "paste clipboard copy column after selected column or at left (nothing selected)"
  3881     "paste clipboard copy column after selected column or at left (nothing selected)"
  3349 
  3882 
  3350     |col lbl|
  3883     |cols idx newSel|
  3351 
  3884 
  3352     self askForItemModification ifFalse: [^nil].
  3885     self askForItemModification ifFalse: [^ self].
  3353     col := self class clipboard deepCopy.
  3886 
  3354     lbl := self labelFromColumn:col.
  3887     cols := self class clipboard.
  3355 
  3888     cols isEmptyOrNil ifTrue:[^ self].
  3356     columns add:col afterIndex:selectedColumnIndex.
  3889 
  3357     self seqList add:lbl afterIndex:selectedColumnIndex.
  3890     idx := (self selectedColumnIndices) isEmpty 
       
  3891                 ifTrue:[ columns size ]
       
  3892                 ifFalse:[ self selectedColumnIndices max ].
       
  3893 
       
  3894     newSel := OrderedCollection new.
       
  3895     cols do:[:col |
       
  3896         | lbl|
       
  3897 
       
  3898         lbl := self labelFromColumn:col.
       
  3899 
       
  3900         columns add:(col deepCopy) afterIndex:idx.
       
  3901         self seqList add:lbl afterIndex:idx.
       
  3902         idx := idx + 1.
       
  3903         newSel add:idx.
       
  3904     ].
  3358 
  3905 
  3359     self enablingCommitButtonsHolder value ifFalse:[
  3906     self enablingCommitButtonsHolder value ifFalse:[
  3360         self selectedColumnModel value:selectedColumnIndex + 1
  3907         self selectedColumnModel value:newSel "/idx
  3361     ].
  3908     ].
  3362     self updateColumnView.
  3909     self updateColumnView.
  3363     self updateInputFields.
  3910     self updateInputFields.
  3364     self setModified.
  3911     self setModified.
  3365 !
  3912 !