UIPainter.st
changeset 1453 0cf534cc29a9
parent 1444 fec7424dccda
child 1456 7435d111bb09
equal deleted inserted replaced
1452:3e0e927f5cb8 1453:0cf534cc29a9
  2025 !UIPainter methodsFor:'building editors'!
  2025 !UIPainter methodsFor:'building editors'!
  2026 
  2026 
  2027 openDataSetColumnEditor
  2027 openDataSetColumnEditor
  2028     "opens a Table Column Editor on current widget"
  2028     "opens a Table Column Editor on current widget"
  2029 
  2029 
  2030     |cls loadedFromClass loadedFromSpec editor tableColumnsOrSelector|
  2030     |cls editor specTool columnHolder tableSelector columns|
  2031 
  2031 
  2032     (cls := self resolveName:specClass) isNil ifTrue:[
  2032     (cls := self resolveName:specClass) isNil ifTrue:[
  2033 	self askForSaving ifFalse: [^self].
  2033         self askForSaving ifTrue:[cls := self resolveName:specClass].
  2034 	cls := self resolveName:specClass.
  2034     ].
  2035     ].
  2035     cls isNil ifTrue:[^ self].
       
  2036 
  2036     self modifiedChannel value ifTrue:[
  2037     self modifiedChannel value ifTrue:[
  2037 	(self confirm:'Accept changes made to spec ?') ifTrue:[
  2038         (self confirm:'Accept changes made to spec ?') ifTrue:[
  2038 	    self accept
  2039             self accept
  2039 	]
  2040         ]
  2040     ].
  2041     ].
  2041 
  2042 
  2042     loadedFromSpec := loadedFromClass := false.
  2043     editor   := DataSetBuilder new.
  2043     editor := DataSetBuilder new.
  2044     specTool := self specTool.
       
  2045 
  2044     editor masterApplication:self.
  2046     editor masterApplication:self.
  2045     editor specClass: cls.
  2047     editor specClass: cls.
  2046     editor rowClassName:(self specTool specification rowClassName).
  2048     editor rowClassName:(specTool specification rowClassName).
  2047     ((tableColumnsOrSelector := self specTool specification columnHolder) notNil and: 
  2049 
  2048     [cls class implements: tableColumnsOrSelector]) ifTrue: [
  2050     columnHolder  := specTool aspectFor:#columnHolder.
  2049 	editor openModalOnClass: cls andSelector: tableColumnsOrSelector.
  2051     tableSelector := columnHolder value.
  2050 	loadedFromClass := true.
  2052 
  2051     ] ifFalse: [       
  2053     tableSelector := tableSelector size ~~ 0 ifTrue:[tableSelector asSymbol]
  2052 	(tableColumnsOrSelector := self specTool specification columns) isNil ifTrue: [
  2054                                             ifFalse:[nil].
  2053 	    editor openModal
  2055 
  2054 	] ifFalse: [         
  2056     (tableSelector notNil and:[cls class implements:tableSelector]) ifTrue:[
  2055 	    editor openModalOnResourceSpec:tableColumnsOrSelector.
  2057         editor openModalOnClass:cls andSelector:tableSelector
  2056 	    loadedFromSpec := true
  2058     ] ifFalse:[
  2057 	].
  2059         columns := specTool specification columns.
  2058     ].
  2060 
  2059 
  2061         columns size ~~ 0 ifTrue:[
  2060     loadedFromClass ifTrue: [
  2062             editor openModalOnResourceSpec:columns
  2061 	self specTool specification columns:nil.
  2063         ] ifFalse:[
  2062 	self specTool specification rowClassName:nil.
  2064             editor openModal
  2063 	self modifiedChannel value:true.
  2065         ]
  2064 	self accept.
  2066     ].
  2065     ].
  2067 
  2066 
  2068     editor hasSaved ifTrue:[
  2067     (loadedFromSpec not and: [editor hasSaved and:[editor specSelector ~= tableColumnsOrSelector]]) ifTrue:[
  2069         specTool specification columns:nil.
  2068 	self specTool specification columnHolder:editor specSelector.
  2070         specTool specification rowClassName:(editor rowClassName).
  2069 	self modifiedChannel value:true.
  2071 
  2070 	self accept.
  2072         tableSelector = editor specSelector ifFalse:[
  2071 	^self
  2073             columnHolder value:(editor specSelector).
  2072     ].
  2074             self accept.
  2073     loadedFromClass ifFalse: [
  2075         ].
  2074 	self specTool specification columns:(editor columns).
  2076         ^ self
  2075 	self specTool specification rowClassName:(editor rowClassName).
  2077     ].
  2076 	self modifiedChannel value: editor modified.
  2078 
  2077     ].
  2079     (editor modified and:[tableSelector isNil]) ifTrue:[
  2078 
  2080         specTool specification columns:(editor columns).
  2079 
  2081         specTool specification rowClassName:(editor rowClassName).
       
  2082         self modifiedChannel value:true.
       
  2083     ].
  2080 !
  2084 !
  2081 
  2085 
  2082 openEditMenu
  2086 openEditMenu
  2083     "opens a Menu Editor on current widget"
  2087     "opens a Menu Editor on current widget"
  2084 
  2088 
  2085     |cls selectorOrMenu editor selectedSpec spec|
  2089     |cls selectorOrMenu editor selectedSpec spec holder|
  2086 
  2090 
  2087     (cls := self resolveName:specClass) isNil ifTrue:[
  2091     (cls := self resolveName:specClass) isNil ifTrue:[
  2088 	self askForSaving ifFalse: [^self].
  2092         self askForSaving ifTrue:[cls := self resolveName:specClass].
  2089 	cls := self resolveName:specClass.
  2093     ].
  2090     ].
  2094     cls isNil ifTrue:[^ self].
  2091 
  2095 
  2092     cls notNil ifTrue:[
  2096     self modifiedChannel value ifTrue:[
  2093 	spec := self specTool specification.
  2097         (self confirm:'Accept changes made to spec ?') ifTrue:[
  2094 
  2098             self accept
  2095 	self modifiedChannel value ifTrue:[
  2099         ]
  2096 	    (self confirm:'Accept changes made to spec ?') ifTrue:[
  2100     ].
  2097 		self accept
  2101     spec := self specTool specification.
  2098 	    ]
  2102 
  2099 	].
  2103     (selectorOrMenu := spec menuSelector) notNil ifTrue:[
  2100 
  2104         selectorOrMenu := selectorOrMenu asSymbol
  2101 	(selectorOrMenu := spec menuSelector) notNil ifTrue:[
  2105     ] ifFalse:[
  2102 	    selectorOrMenu := selectorOrMenu asSymbol
  2106         "/ cg: q&d hack ...
  2103 	] ifFalse:[
  2107         selectorOrMenu := nil.
  2104 	    "/ cg: q&d hack ...
  2108 
  2105 
  2109         (selectedSpec := treeView propertySelected) notNil ifTrue:[
  2106 	    (selectedSpec := treeView propertySelected) notNil ifTrue:[
  2110             Object errorSignal handle:[:ex |
  2107 		Object errorSignal handle:[:ex |
  2111                 selectorOrMenu := nil.
  2108 		    selectorOrMenu := nil.
  2112             ] do:[
  2109 		] do:[
  2113                 selectorOrMenu := selectedSpec view asMenu.
  2110 		    selectorOrMenu := selectedSpec view asMenu.
  2114             ]
  2111 		]
  2115         ].
  2112 	    ].
  2116     ].
  2113 	].
  2117 
  2114 
  2118     editor := MenuEditor new.
  2115 	editor := MenuEditor new.
  2119     editor masterApplication:self.
  2116 	editor masterApplication:self.
  2120     editor specClass: cls.
  2117 	editor specClass: cls.
  2121     editor useHelpTool: self helpTool.
  2118 	editor useHelpTool: self helpTool. 
  2122 
  2119 	selectorOrMenu class ~~ Menu
  2123     selectorOrMenu class ~~ Menu
  2120 	    ifTrue:  [editor openModalOnClass:cls andSelector:selectorOrMenu]
  2124         ifTrue:  [editor openModalOnClass:cls andSelector:selectorOrMenu]
  2121 	    ifFalse: [editor openModalOnMenu:selectorOrMenu].
  2125         ifFalse: [editor openModalOnMenu:selectorOrMenu].
  2122 	self helpTool updateList.
  2126 
  2123 
  2127     self helpTool updateList.
  2124 "/        editor specSelector ~= selectorOrMenu ifTrue:[
  2128 
  2125 	    editor hasSaved ifTrue:[
  2129     editor hasSaved ifTrue:[
  2126 		spec menuSelector:editor specSelector.
  2130         holder := self specTool aspectFor:#menuSelector.
  2127 		self modifiedChannel value:true.
  2131         holder value:(editor specSelector).
  2128 		self accept
  2132         self accept.
  2129 "/            ]
  2133       ^ self
  2130 	].
  2134     ].
  2131     ]
       
  2132 
       
  2133     "Modified: / 16.7.1998 / 18:16:42 / cg"
       
  2134 !
  2135 !
  2135 
  2136 
  2136 openHierarchicalListEditor
  2137 openHierarchicalListEditor
  2137     "opens a Hierarchical List Editor on current widget"
  2138     "opens a Hierarchical List Editor on current widget"
  2138 
  2139 
  2193 !
  2194 !
  2194 
  2195 
  2195 openTabListEditor
  2196 openTabListEditor
  2196     "opens a Tab List Editor on current widget"
  2197     "opens a Tab List Editor on current widget"
  2197 
  2198 
  2198     |selector editor spec|
  2199     |selector editor spec cls holder|
  2199 
  2200 
  2200     (self resolveName:specClass) isNil ifTrue:[
  2201     (cls := self resolveName:specClass) isNil ifTrue:[
  2201 	self askForSaving ifFalse: [^self]
  2202         self askForSaving ifTrue:[cls := self resolveName:specClass].
  2202     ].
  2203     ].
  2203 
  2204     cls isNil ifTrue:[^ self].
       
  2205 
       
  2206     self modifiedChannel value ifTrue:[
       
  2207         (self confirm:'Accept changes made to spec ?') ifTrue:[
       
  2208             self accept
       
  2209         ]
       
  2210     ].
  2204     spec := self specTool specification.
  2211     spec := self specTool specification.
       
  2212 
  2205     (selector := spec listSelector) isArray 
  2213     (selector := spec listSelector) isArray 
  2206 	ifTrue: [^self warn: 'Cannot open the Tab List Editor on an array!!'].
  2214         ifTrue: [^self warn: 'Cannot open the Tab List Editor on an array!!'].
  2207 
  2215 
  2208     editor := TabListEditor new.
  2216     editor := TabListEditor new.
  2209     editor masterApplication:self.
  2217     editor masterApplication:self.
  2210     editor openModalOnClass:specClass andSelector:selector.
  2218     editor openModalOnClass:cls andSelector:selector.
  2211 
  2219 
  2212     editor specSelector ~= selector ifTrue:[
  2220     editor hasSaved ifTrue:[
  2213 	editor hasSaved ifTrue:[
  2221         holder := self specTool aspectFor:#listSelector.
  2214 	    spec listSelector:editor specSelector.
  2222 
  2215 	    self modifiedChannel value:true.
  2223         holder value ~= editor specSelector ifTrue:[
  2216 	    self accept.
  2224             holder value:editor specSelector.
  2217 	]
  2225             self accept.
  2218     ]
  2226         ]
  2219 
  2227     ].
  2220     "Modified: / 16.7.1998 / 18:15:14 / cg"
       
  2221 ! !
  2228 ! !
  2222 
  2229 
  2223 !UIPainter methodsFor:'change & update'!
  2230 !UIPainter methodsFor:'change & update'!
  2224 
  2231 
  2225 layoutChanged
  2232 layoutChanged