diff -r 3e0e927f5cb8 -r 0cf534cc29a9 UIPainter.st --- a/UIPainter.st Wed Feb 21 18:21:37 2001 +0100 +++ b/UIPainter.st Fri Feb 23 08:07:07 2001 +0100 @@ -2027,110 +2027,111 @@ openDataSetColumnEditor "opens a Table Column Editor on current widget" - |cls loadedFromClass loadedFromSpec editor tableColumnsOrSelector| + |cls editor specTool columnHolder tableSelector columns| (cls := self resolveName:specClass) isNil ifTrue:[ - self askForSaving ifFalse: [^self]. - cls := self resolveName:specClass. + self askForSaving ifTrue:[cls := self resolveName:specClass]. ]. + cls isNil ifTrue:[^ self]. + self modifiedChannel value ifTrue:[ - (self confirm:'Accept changes made to spec ?') ifTrue:[ - self accept - ] + (self confirm:'Accept changes made to spec ?') ifTrue:[ + self accept + ] ]. - loadedFromSpec := loadedFromClass := false. - editor := DataSetBuilder new. + editor := DataSetBuilder new. + specTool := self specTool. + editor masterApplication:self. editor specClass: cls. - editor rowClassName:(self specTool specification rowClassName). - ((tableColumnsOrSelector := self specTool specification columnHolder) notNil and: - [cls class implements: tableColumnsOrSelector]) ifTrue: [ - editor openModalOnClass: cls andSelector: tableColumnsOrSelector. - loadedFromClass := true. - ] ifFalse: [ - (tableColumnsOrSelector := self specTool specification columns) isNil ifTrue: [ - editor openModal - ] ifFalse: [ - editor openModalOnResourceSpec:tableColumnsOrSelector. - loadedFromSpec := true - ]. + editor rowClassName:(specTool specification rowClassName). + + columnHolder := specTool aspectFor:#columnHolder. + tableSelector := columnHolder value. + + tableSelector := tableSelector size ~~ 0 ifTrue:[tableSelector asSymbol] + ifFalse:[nil]. + + (tableSelector notNil and:[cls class implements:tableSelector]) ifTrue:[ + editor openModalOnClass:cls andSelector:tableSelector + ] ifFalse:[ + columns := specTool specification columns. + + columns size ~~ 0 ifTrue:[ + editor openModalOnResourceSpec:columns + ] ifFalse:[ + editor openModal + ] ]. - loadedFromClass ifTrue: [ - self specTool specification columns:nil. - self specTool specification rowClassName:nil. - self modifiedChannel value:true. - self accept. + editor hasSaved ifTrue:[ + specTool specification columns:nil. + specTool specification rowClassName:(editor rowClassName). + + tableSelector = editor specSelector ifFalse:[ + columnHolder value:(editor specSelector). + self accept. + ]. + ^ self ]. - (loadedFromSpec not and: [editor hasSaved and:[editor specSelector ~= tableColumnsOrSelector]]) ifTrue:[ - self specTool specification columnHolder:editor specSelector. - self modifiedChannel value:true. - self accept. - ^self + (editor modified and:[tableSelector isNil]) ifTrue:[ + specTool specification columns:(editor columns). + specTool specification rowClassName:(editor rowClassName). + self modifiedChannel value:true. ]. - loadedFromClass ifFalse: [ - self specTool specification columns:(editor columns). - self specTool specification rowClassName:(editor rowClassName). - self modifiedChannel value: editor modified. - ]. - - ! openEditMenu "opens a Menu Editor on current widget" - |cls selectorOrMenu editor selectedSpec spec| + |cls selectorOrMenu editor selectedSpec spec holder| (cls := self resolveName:specClass) isNil ifTrue:[ - self askForSaving ifFalse: [^self]. - cls := self resolveName:specClass. + self askForSaving ifTrue:[cls := self resolveName:specClass]. + ]. + cls isNil ifTrue:[^ self]. + + self modifiedChannel value ifTrue:[ + (self confirm:'Accept changes made to spec ?') ifTrue:[ + self accept + ] ]. - - cls notNil ifTrue:[ - spec := self specTool specification. - - self modifiedChannel value ifTrue:[ - (self confirm:'Accept changes made to spec ?') ifTrue:[ - self accept - ] - ]. - - (selectorOrMenu := spec menuSelector) notNil ifTrue:[ - selectorOrMenu := selectorOrMenu asSymbol - ] ifFalse:[ - "/ cg: q&d hack ... - - (selectedSpec := treeView propertySelected) notNil ifTrue:[ - Object errorSignal handle:[:ex | - selectorOrMenu := nil. - ] do:[ - selectorOrMenu := selectedSpec view asMenu. - ] - ]. - ]. - - editor := MenuEditor new. - editor masterApplication:self. - editor specClass: cls. - editor useHelpTool: self helpTool. - selectorOrMenu class ~~ Menu - ifTrue: [editor openModalOnClass:cls andSelector:selectorOrMenu] - ifFalse: [editor openModalOnMenu:selectorOrMenu]. - self helpTool updateList. - -"/ editor specSelector ~= selectorOrMenu ifTrue:[ - editor hasSaved ifTrue:[ - spec menuSelector:editor specSelector. - self modifiedChannel value:true. - self accept -"/ ] - ]. - ] - - "Modified: / 16.7.1998 / 18:16:42 / cg" + spec := self specTool specification. + + (selectorOrMenu := spec menuSelector) notNil ifTrue:[ + selectorOrMenu := selectorOrMenu asSymbol + ] ifFalse:[ + "/ cg: q&d hack ... + selectorOrMenu := nil. + + (selectedSpec := treeView propertySelected) notNil ifTrue:[ + Object errorSignal handle:[:ex | + selectorOrMenu := nil. + ] do:[ + selectorOrMenu := selectedSpec view asMenu. + ] + ]. + ]. + + editor := MenuEditor new. + editor masterApplication:self. + editor specClass: cls. + editor useHelpTool: self helpTool. + + selectorOrMenu class ~~ Menu + ifTrue: [editor openModalOnClass:cls andSelector:selectorOrMenu] + ifFalse: [editor openModalOnMenu:selectorOrMenu]. + + self helpTool updateList. + + editor hasSaved ifTrue:[ + holder := self specTool aspectFor:#menuSelector. + holder value:(editor specSelector). + self accept. + ^ self + ]. ! openHierarchicalListEditor @@ -2195,29 +2196,35 @@ openTabListEditor "opens a Tab List Editor on current widget" - |selector editor spec| - - (self resolveName:specClass) isNil ifTrue:[ - self askForSaving ifFalse: [^self] + |selector editor spec cls holder| + + (cls := self resolveName:specClass) isNil ifTrue:[ + self askForSaving ifTrue:[cls := self resolveName:specClass]. ]. - + cls isNil ifTrue:[^ self]. + + self modifiedChannel value ifTrue:[ + (self confirm:'Accept changes made to spec ?') ifTrue:[ + self accept + ] + ]. spec := self specTool specification. + (selector := spec listSelector) isArray - ifTrue: [^self warn: 'Cannot open the Tab List Editor on an array!!']. + ifTrue: [^self warn: 'Cannot open the Tab List Editor on an array!!']. editor := TabListEditor new. editor masterApplication:self. - editor openModalOnClass:specClass andSelector:selector. - - editor specSelector ~= selector ifTrue:[ - editor hasSaved ifTrue:[ - spec listSelector:editor specSelector. - self modifiedChannel value:true. - self accept. - ] - ] - - "Modified: / 16.7.1998 / 18:15:14 / cg" + editor openModalOnClass:cls andSelector:selector. + + editor hasSaved ifTrue:[ + holder := self specTool aspectFor:#listSelector. + + holder value ~= editor specSelector ifTrue:[ + holder value:editor specSelector. + self accept. + ] + ]. ! ! !UIPainter methodsFor:'change & update'!