bugfix when after close subtool (table menu ..) when reading selector
authorca
Fri, 23 Feb 2001 08:07:07 +0100
changeset 1453 0cf534cc29a9
parent 1452 3e0e927f5cb8
child 1454 367b8342663e
bugfix when after close subtool (table menu ..) when reading selector
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'!