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 listOfItemsView' |
16 modalOpened listOfSpecViews listOfItemsView editingSpecOnly |
|
17 acceptedColumns' |
17 classVariableNames:'' |
18 classVariableNames:'' |
18 poolDictionaries:'' |
19 poolDictionaries:'' |
19 category:'Interface-UIPainter' |
20 category:'Interface-UIPainter' |
20 ! |
21 ! |
21 |
22 |
2102 ) |
2106 ) |
2103 ! ! |
2107 ! ! |
2104 |
2108 |
2105 !DataSetBuilder class methodsFor:'menu specs'! |
2109 !DataSetBuilder class methodsFor:'menu specs'! |
2106 |
2110 |
|
2111 fileMenu |
|
2112 "This resource specification was automatically generated |
|
2113 by the MenuEditor of ST/X." |
|
2114 |
|
2115 "Do not manually edit this!! If it is corrupted, |
|
2116 the MenuEditor may not be able to read the specification." |
|
2117 |
|
2118 " |
|
2119 MenuEditor new openOnClass:DataSetBuilder andSelector:#fileMenu |
|
2120 (Menu new fromLiteralArrayEncoding:(DataSetBuilder fileMenu)) startUp |
|
2121 " |
|
2122 |
|
2123 <resource: #menu> |
|
2124 |
|
2125 ^ |
|
2126 #(Menu |
|
2127 ( |
|
2128 (MenuItem |
|
2129 activeHelpKey: fileNew |
|
2130 label: 'New' |
|
2131 itemValue: doNew |
|
2132 translateLabel: true |
|
2133 ) |
|
2134 (MenuItem |
|
2135 label: '-' |
|
2136 isVisible: notEditingSpecOnly |
|
2137 ) |
|
2138 (MenuItem |
|
2139 activeHelpKey: fileLoad |
|
2140 label: 'Load...' |
|
2141 itemValue: doLoad |
|
2142 translateLabel: true |
|
2143 isVisible: notEditingSpecOnly |
|
2144 ) |
|
2145 (MenuItem |
|
2146 label: '-' |
|
2147 ) |
|
2148 (MenuItem |
|
2149 activeHelpKey: fileSave |
|
2150 label: 'Save' |
|
2151 itemValue: doSave |
|
2152 translateLabel: true |
|
2153 isVisible: editingSpecOnly |
|
2154 ) |
|
2155 (MenuItem |
|
2156 activeHelpKey: fileSaveMethod |
|
2157 label: 'Save' |
|
2158 itemValue: doSave |
|
2159 translateLabel: true |
|
2160 isVisible: notEditingSpecOnly |
|
2161 ) |
|
2162 (MenuItem |
|
2163 activeHelpKey: fileSaveAsMethod |
|
2164 label: 'Save As...' |
|
2165 itemValue: doSaveAs |
|
2166 translateLabel: true |
|
2167 isVisible: notEditingSpecOnly |
|
2168 ) |
|
2169 (MenuItem |
|
2170 label: '-' |
|
2171 ) |
|
2172 (MenuItem |
|
2173 activeHelpKey: pickColumns |
|
2174 label: 'Pick Columns...' |
|
2175 itemValue: doPickColumns |
|
2176 translateLabel: true |
|
2177 ) |
|
2178 (MenuItem |
|
2179 label: '-' |
|
2180 isVisible: isStandAlone |
|
2181 ) |
|
2182 (MenuItem |
|
2183 activeHelpKey: fileBrowseClass |
|
2184 label: 'Browse Class' |
|
2185 itemValue: doBrowseClass |
|
2186 translateLabel: true |
|
2187 isVisible: isStandAlone |
|
2188 ) |
|
2189 (MenuItem |
|
2190 label: '-' |
|
2191 isVisible: isStandAlone |
|
2192 ) |
|
2193 (MenuItem |
|
2194 activeHelpKey: fileExit |
|
2195 label: 'Exit' |
|
2196 itemValue: closeRequest |
|
2197 translateLabel: true |
|
2198 isVisible: isStandAlone |
|
2199 ) |
|
2200 ) |
|
2201 nil |
|
2202 nil |
|
2203 ) |
|
2204 ! |
|
2205 |
2107 menu |
2206 menu |
2108 "This resource specification was automatically generated |
2207 "This resource specification was automatically generated |
2109 by the MenuEditor of ST/X." |
2208 by the MenuEditor of ST/X." |
2110 |
2209 |
2111 "Do not manually edit this!! If it is corrupted, |
2210 "Do not manually edit this!! If it is corrupted, |
2122 #(Menu |
2221 #(Menu |
2123 ( |
2222 ( |
2124 (MenuItem |
2223 (MenuItem |
2125 label: 'File' |
2224 label: 'File' |
2126 translateLabel: true |
2225 translateLabel: true |
2127 submenu: |
2226 submenuChannel: fileMenu |
2128 (Menu |
|
2129 ( |
|
2130 (MenuItem |
|
2131 activeHelpKey: fileNew |
|
2132 label: 'New' |
|
2133 itemValue: doNew |
|
2134 translateLabel: true |
|
2135 ) |
|
2136 (MenuItem |
|
2137 label: '-' |
|
2138 ) |
|
2139 (MenuItem |
|
2140 activeHelpKey: fileLoad |
|
2141 label: 'Load...' |
|
2142 itemValue: doLoad |
|
2143 translateLabel: true |
|
2144 ) |
|
2145 (MenuItem |
|
2146 label: '-' |
|
2147 ) |
|
2148 (MenuItem |
|
2149 activeHelpKey: fileSave |
|
2150 label: 'Save' |
|
2151 itemValue: doSave |
|
2152 translateLabel: true |
|
2153 ) |
|
2154 (MenuItem |
|
2155 activeHelpKey: fileSaveAs |
|
2156 label: 'Save As...' |
|
2157 itemValue: doSaveAs |
|
2158 translateLabel: true |
|
2159 ) |
|
2160 (MenuItem |
|
2161 label: '-' |
|
2162 ) |
|
2163 (MenuItem |
|
2164 activeHelpKey: pickColumns |
|
2165 label: 'Pick Columns...' |
|
2166 itemValue: doPickColumns |
|
2167 translateLabel: true |
|
2168 ) |
|
2169 (MenuItem |
|
2170 label: '-' |
|
2171 isVisible: isStandAlone |
|
2172 ) |
|
2173 (MenuItem |
|
2174 activeHelpKey: fileBrowseClass |
|
2175 label: 'Browse Class' |
|
2176 itemValue: doBrowseClass |
|
2177 translateLabel: true |
|
2178 isVisible: isStandAlone |
|
2179 ) |
|
2180 (MenuItem |
|
2181 label: '-' |
|
2182 isVisible: isStandAlone |
|
2183 ) |
|
2184 (MenuItem |
|
2185 activeHelpKey: fileExit |
|
2186 label: 'Exit' |
|
2187 itemValue: closeRequest |
|
2188 translateLabel: true |
|
2189 isVisible: isStandAlone |
|
2190 ) |
|
2191 ) |
|
2192 nil |
|
2193 nil |
|
2194 ) |
|
2195 ) |
2227 ) |
2196 (MenuItem |
2228 (MenuItem |
2197 label: 'Edit' |
2229 label: 'Edit' |
2198 translateLabel: true |
2230 translateLabel: true |
2199 submenuChannel: menuEditWithoutAccelerators |
2231 submenuChannel: menuEditWithoutAccelerators |
2628 isButton: true |
2661 isButton: true |
2629 submenuChannel: menuHistory |
2662 submenuChannel: menuHistory |
2630 labelImage: (ResourceRetriever ToolbarIconLibrary loadFromMethodIcon) |
2663 labelImage: (ResourceRetriever ToolbarIconLibrary loadFromMethodIcon) |
2631 ) |
2664 ) |
2632 (MenuItem |
2665 (MenuItem |
|
2666 activeHelpKey: fileSaveMethod |
|
2667 label: 'Save' |
|
2668 itemValue: doSave |
|
2669 translateLabel: true |
|
2670 isButton: true |
|
2671 isVisible: notEditingSpecOnly |
|
2672 labelImage: (ResourceRetriever ToolbarIconLibrary saveAsMethodIcon) |
|
2673 ) |
|
2674 (MenuItem |
2633 activeHelpKey: fileSave |
2675 activeHelpKey: fileSave |
2634 label: 'Save' |
2676 label: 'Save' |
2635 itemValue: doSave |
2677 itemValue: doSave |
2636 translateLabel: true |
2678 translateLabel: true |
2637 isButton: true |
2679 isButton: true |
2638 labelImage: (ResourceRetriever ToolbarIconLibrary saveAsMethodIcon) |
2680 isVisible: editingSpecOnly |
|
2681 labelImage: (ResourceRetriever ToolbarIconLibrary saveToFileIcon) |
2639 ) |
2682 ) |
2640 (MenuItem |
2683 (MenuItem |
2641 label: '-' |
2684 label: '-' |
2642 ) |
2685 ) |
2643 (MenuItem |
2686 (MenuItem |
2729 ) |
2772 ) |
2730 ! ! |
2773 ! ! |
2731 |
2774 |
2732 !DataSetBuilder methodsFor:'accessing'! |
2775 !DataSetBuilder methodsFor:'accessing'! |
2733 |
2776 |
|
2777 acceptedColumns |
|
2778 "returns the last saved columns (internal, for specOnly edit mode)" |
|
2779 |
|
2780 ^ acceptedColumns |
|
2781 ! |
|
2782 |
2734 columns |
2783 columns |
2735 "returns list of columns" |
2784 "returns list of columns" |
2736 |
2785 |
2737 ^ columns |
2786 ^ columns |
2738 ! |
2787 ! |
2739 |
2788 |
2740 columns:aListOfColumns |
2789 columns:aListOfColumns |
2741 "setup columns from a column view" |
2790 "setup columns from a column view" |
2742 |
2791 |
2743 |list| |
2792 |list newColumns| |
2744 |
2793 |
2745 columns := OrderedCollection new. |
2794 newColumns := OrderedCollection new. |
2746 list := self seqList. |
2795 list := self seqList. |
2747 |
|
2748 list removeAll. |
2796 list removeAll. |
2749 |
2797 |
2750 aListOfColumns size ~~ 0 ifTrue:[ |
2798 aListOfColumns size ~~ 0 ifTrue:[ |
2751 aListOfColumns do:[:aColumn||column| |
2799 aListOfColumns do:[:aColumn||column| |
2752 (column := aColumn) isSequenceable ifTrue:[ |
2800 (column := aColumn) isSequenceable ifTrue:[ |
2753 column := DataSetColumnSpec decodeFromLiteralArray:aColumn |
2801 column := DataSetColumnSpec decodeFromLiteralArray:aColumn |
2754 ] ifFalse:[ |
2802 ] ifFalse:[ |
2755 column := aColumn copy |
2803 column := aColumn copy |
2756 ]. |
2804 ]. |
2757 columns add:column. |
2805 newColumns add:column. |
2758 list add:(self labelFromColumn:column). |
2806 list add:(self labelFromColumn:column). |
2759 ] |
2807 ] |
2760 ]. |
2808 ]. |
|
2809 columns := newColumns. |
2761 self updateColumnView. |
2810 self updateColumnView. |
2762 |
2811 |
2763 "Modified: / 27-03-2007 / 08:46:39 / cg" |
2812 "Modified: / 27-03-2007 / 08:46:39 / cg" |
|
2813 ! |
|
2814 |
|
2815 editingSpecOnly |
|
2816 ^ editingSpecOnly ? false |
|
2817 ! |
|
2818 |
|
2819 editingSpecOnly:something |
|
2820 editingSpecOnly := something. |
|
2821 ! |
|
2822 |
|
2823 notEditingSpecOnly |
|
2824 ^ self editingSpecOnly not |
2764 ! |
2825 ! |
2765 |
2826 |
2766 resolveRowClass |
2827 resolveRowClass |
2767 "returns the resolved row class |
2828 "returns the resolved row class |
2768 " |
2829 " |
2911 "/ ]. |
2972 "/ ]. |
2912 |
2973 |
2913 ! |
2974 ! |
2914 |
2975 |
2915 loadFromClass:aClass andSelector:aSelector |
2976 loadFromClass:aClass andSelector:aSelector |
2916 |updateBlock cls list| |
2977 |cls list| |
2917 |
2978 |
2918 self assert:(aClass isNil or:[aClass isClass]). |
2979 self assert:(aClass isNil or:[aClass isClass]). |
2919 |
2980 |
2920 selectedColumnIndex := 0. |
2981 selectedColumnIndex := 0. |
2921 |
|
2922 updateBlock := [ |
|
2923 columns notEmpty ifTrue: [ |
|
2924 self tabModel value:0; value:1. "/ toggle to force change |
|
2925 self selectedColumnModel value:nil; value:1. "/ toggle to force change |
|
2926 self updateColumnView. |
|
2927 self updateInputFields. |
|
2928 self updateInfoLabel. |
|
2929 self updateHistory. |
|
2930 self clearModifiedFlag. |
|
2931 self enablingCommitButtonsHolder value:false. |
|
2932 ] |
|
2933 ]. |
|
2934 |
2982 |
2935 "if opened on table columns" |
2983 "if opened on table columns" |
2936 |
2984 |
2937 aClass isNil ifTrue: [ |
2985 aClass isNil ifTrue: [ |
2938 self tabModel value: 0. |
2986 self tabModel value: 0. |
2939 self columns removeAll. |
2987 "/ self columns removeAll. |
2940 self seqList removeAll. |
2988 "/ self seqList removeAll. |
2941 self updateColumnView. |
2989 self updateColumnView. |
2942 self updateInfoLabel. |
2990 self updateInfoLabel. |
2943 self isColumnSelected value: false. |
2991 self isColumnSelected value: false. |
2944 ^ self. |
2992 ^ self. |
2945 ]. |
2993 ]. |
2946 |
2994 |
2947 specSelector isNil ifTrue: [updateBlock value. ^self]. |
2995 specSelector isNil ifTrue: [ |
|
2996 self updateAfterColumnChange. |
|
2997 ^ self |
|
2998 ]. |
2948 |
2999 |
2949 list := nil. |
3000 list := nil. |
2950 |
3001 |
2951 (aClass notNil or:[self isStandAlone or:[self window shown]]) ifTrue:[ |
3002 (aClass notNil or:[self isStandAlone or:[self window shown]]) ifTrue:[ |
2952 (aClass notNil and:[aSelector notNil]) ifTrue:[ |
3003 (aClass notNil and:[aSelector notNil]) ifTrue:[ |
2958 ] |
3009 ] |
2959 ] ifFalse:[ |
3010 ] ifFalse:[ |
2960 list := columns |
3011 list := columns |
2961 ]. |
3012 ]. |
2962 self columns:list. |
3013 self columns:list. |
2963 updateBlock value. |
3014 self updateAfterColumnChange. |
|
3015 ! |
|
3016 |
|
3017 updateAfterColumnChange |
|
3018 self tabModel value:0; value:1. "/ toggle to force change |
|
3019 self selectedColumnModel value:nil; value:1. "/ toggle to force change |
|
3020 self updateColumnView. |
|
3021 self updateInputFields. |
|
3022 self updateInfoLabel. |
|
3023 self updateHistory. |
|
3024 self clearModifiedFlag. |
|
3025 self enablingCommitButtonsHolder value:false. |
2964 ! ! |
3026 ! ! |
2965 |
3027 |
2966 !DataSetBuilder methodsFor:'code generation'! |
3028 !DataSetBuilder methodsFor:'code generation'! |
2967 |
3029 |
2968 compile:aCode forClass:aClass inCategory:aCategory |
3030 compile:aCode forClass:aClass inCategory:aCategory |
3347 modalOpened := false. |
3409 modalOpened := false. |
3348 listOfSpecViews := Array new:(self class slices size). |
3410 listOfSpecViews := Array new:(self class slices size). |
3349 |
3411 |
3350 ! |
3412 ! |
3351 |
3413 |
|
3414 loadFromResourceSpec: aResourceSpec |
|
3415 self columns:aResourceSpec copy. |
|
3416 modified := false. |
|
3417 hasSaved := false. |
|
3418 self updateAfterColumnChange. |
|
3419 ! |
|
3420 |
3352 setDefaultValuesInNewColumn:aDataSetColumnSpec |
3421 setDefaultValuesInNewColumn:aDataSetColumnSpec |
3353 "/ aDataSetColumnSpec readSelector: #'valueAtColumnIndex:'. |
3422 "/ aDataSetColumnSpec readSelector: #'valueAtColumnIndex:'. |
3354 "/ aDataSetColumnSpec writeSelector: #'valueAtColumnIndex:put:'. |
3423 "/ aDataSetColumnSpec writeSelector: #'valueAtColumnIndex:put:'. |
3355 "/ aDataSetColumnSpec backgroundSelector: #'bgAtRowIndex:columnIndex:'. |
3424 "/ aDataSetColumnSpec backgroundSelector: #'bgAtRowIndex:columnIndex:'. |
3356 "/ aDataSetColumnSpec foregroundSelector: #'fgAtRowIndex:columnIndex:'. |
3425 "/ aDataSetColumnSpec foregroundSelector: #'fgAtRowIndex:columnIndex:'. |
3573 labelInPreviewPressed:anIndex |
3652 labelInPreviewPressed:anIndex |
3574 (self componentAt:#labelAndColumns) selection:anIndex |
3653 (self componentAt:#labelAndColumns) selection:anIndex |
3575 ! |
3654 ! |
3576 |
3655 |
3577 updateColumnView |
3656 updateColumnView |
3578 "updates column view from column descriptions |
3657 "updates the column view from column descriptions" |
3579 " |
3658 |
3580 |size| |
3659 |size previewColumns columnList| |
3581 |
3660 |
3582 columnView notNil ifTrue:[ |
3661 columnView notNil ifTrue:[ |
3583 |previewColumns columnItems columnList| |
|
3584 columnList := List new. |
3662 columnList := List new. |
3585 previewColumns := OrderedCollection new. |
3663 previewColumns := OrderedCollection new. |
3586 |
3664 |
3587 (size := columns size) ~~ 0 ifTrue:[ |
3665 (size := columns size) ~~ 0 ifTrue:[ |
3588 columns do:[:aCol| |
3666 columns do:[:aCol| |
3605 labelActionSelector:#labelInPreviewPressed:; |
3683 labelActionSelector:#labelInPreviewPressed:; |
3606 labelActionArgument:anIndex; |
3684 labelActionArgument:anIndex; |
3607 choices:#choices |
3685 choices:#choices |
3608 ]. |
3686 ]. |
3609 #(' 1' ' 2' ' x') do:[:suffix| |
3687 #(' 1' ' 2' ' x') do:[:suffix| |
3610 columnItems := Row new:size. |
3688 |oneRow| |
3611 1 to:size do:[:i| columnItems at: i put: ('Cell', suffix)]. |
3689 |
3612 columnList add: columnItems. |
3690 oneRow := Row new:size. |
|
3691 1 to:size do:[:i | oneRow at: i put: ('Cell%1-%2' bindWith:suffix with:i)]. |
|
3692 columnList add: oneRow. |
3613 ] |
3693 ] |
3614 ]. |
3694 ]. |
|
3695 |
3615 columnView list: #(). |
3696 columnView list: #(). |
3616 columnView columnDescriptors: previewColumns. |
3697 columnView columnDescriptors: previewColumns. |
3617 columnView list: columnList. |
3698 columnView list: columnList. |
3618 ]. |
3699 ]. |
3619 |
3700 |