UIPainter.st
changeset 328 0e8a4296dec1
parent 321 9b6c937e218d
child 333 a2e23dea36bf
--- a/UIPainter.st	Fri Oct 10 20:59:33 1997 +0200
+++ b/UIPainter.st	Wed Oct 15 12:38:20 1997 +0200
@@ -1353,7 +1353,7 @@
     "cancel all changes done to the specification; reread attributes from the
      assigned component
     "
-    |spec key|
+    |spec key view|
 
     self isModified ifTrue:[
         (spec := self painter specForSelection) notNil ifTrue:[
@@ -1361,7 +1361,12 @@
         ].
         self helpTool helpKey:key.
         self specTool specification:spec.
-        self setViewInLayoutTool:(self layoutTool layoutView).
+        view := self layoutTool layoutView.
+
+        self setViewInLayoutTool:view.
+        spec class == DataSetSpec ifTrue:[
+            view columnDescriptors:(spec columns)
+        ].        
         self modifiedChannel value:false.
     ]
 !
@@ -1393,19 +1398,38 @@
 
 !
 
+openDataSetColumnEditor
+    "opens a column editor
+    "
+    |cls aspect editor columns|
+
+    cls := self resolveName:specClass.
+
+    cls isNil ifTrue:[
+        ^ self information:'no application class defined yet'
+    ].
+    aspect := self specTool specification columns.
+    editor := DataSetBuilder new.
+    editor columns:aspect fromView:(self layoutTool layoutView).
+    editor className:(self specTool specification className).
+    editor openModal.
+
+    editor hasChanged ifTrue:[
+        self specTool specification columns:(editor columns).
+        self specTool specification className:(editor className).
+        self modifiedChannel value:true.
+    ].
+!
+
 openEditMenu
     "opens a menu editor on current widget
     "
     |cls aspect editor|
 
-    specClass isNil ifTrue:[
-        ^ self information:'no application class defined yet'.
-    ].
-    (cls := specClass) isBehavior ifFalse:[
-        cls := Smalltalk at:specClass asSymbol.
-        cls isNil ifTrue:[
-            ^ self information:'no application class defined yet'
-        ]
+    cls := self resolveName:specClass.
+
+    cls isNil ifTrue:[
+        ^ self information:'no application class defined yet'
     ].
 
     cls notNil ifTrue:[
@@ -1447,46 +1471,38 @@
     "
     |cls aspect editor|
 
-    specClass isNil ifTrue:[
-        ^ self information:'no application class defined yet'.
-    ].
-    (cls := specClass) isBehavior ifFalse:[
-        cls := Smalltalk at:specClass asSymbol.
-        cls isNil ifTrue:[
-            ^ self information:'no application class defined yet'
-        ]
+    cls := self resolveName:specClass.
+
+    cls isNil ifTrue:[
+        ^ self information:'no application class defined yet'
     ].
 
-    cls notNil ifTrue:[
-        (aspect := self specTool specification hierarchicalList) notNil ifTrue:[
-            aspect := aspect asSymbol
-        ] ifFalse:[
-            "/ cg: q&d hack ...
-
-            aspect := treeView propertySelected.
-            aspect notNil ifTrue:[
-                Object errorSignal handle:[:ex |
-                    aspect := nil.
-                ] do:[
-                    aspect := aspect view asMenu.
-                ]
-            ].
-        ].
-        
-        editor := HierarchicalListEditor new.
-        editor masterApplication:self.
-        editor openModalOnClass:cls andSelector:aspect.
-
-        editor selectorName ~= aspect ifTrue:[
-            editor didInstall ifTrue:[
-                self specTool specification hierarchicalList:editor selectorName asSymbol.
-                self modifiedChannel value:true.
-                self accept
+    (aspect := self specTool specification hierarchicalList) notNil ifTrue:[
+        aspect := aspect asSymbol
+    ] ifFalse:[
+        "/ cg: q&d hack ...
+
+        aspect := treeView propertySelected.
+        aspect notNil ifTrue:[
+            Object errorSignal handle:[:ex |
+                aspect := nil.
+            ] do:[
+                aspect := aspect view asMenu.
             ]
         ].
+    ].
+    
+    editor := HierarchicalListEditor new.
+    editor masterApplication:self.
+    editor openModalOnClass:cls andSelector:aspect.
+
+    editor selectorName ~= aspect ifTrue:[
+        editor didInstall ifTrue:[
+            self specTool specification hierarchicalList:editor selectorName asSymbol.
+            self modifiedChannel value:true.
+            self accept
+        ]
     ]
-
-    "Modified: 31.7.1997 / 14:26:13 / cg"
 ! !
 
 !UIPainter methodsFor:'aspects'!
@@ -1877,10 +1893,7 @@
 hasSpecClass
     "checks whether an application class is defined
     "
-    specClass notNil ifTrue:[
-        ^ (specClass isBehavior or:[(Smalltalk at:specClass asSymbol) notNil])
-    ].
-  ^ false
+    ^ (self resolveName:specClass) notNil
 !
 
 hasSpecClassAndSelector
@@ -2065,7 +2078,7 @@
     ).
     specSuperclass isNil ifTrue:[
         specClass notNil ifTrue:[
-            (cls := Smalltalk at:specClass asSymbol) notNil ifTrue:[
+            (cls := self resolveName:specClass) notNil ifTrue:[
                 specSuperclass := cls superclass name.
             ]
         ]
@@ -2183,13 +2196,12 @@
 
     specClass isNil ifTrue:[^ false].
 
-    specClass isBehavior ifFalse:[
-        cls := Smalltalk at:specClass asSymbol
-    ] ifTrue:[
-        cls := specClass
-    ].
+    cls := self resolveName:specClass.
+
     cls isNil ifTrue:[
-        (superclass := Smalltalk at:specSuperclass asSymbol) isNil ifTrue:[
+        superclass := self resolveName:specSuperclass.
+
+        superclass isNil ifTrue:[
             self warn:'no class named ' , specSuperclass , ' exists.'.
             ^ false.
         ].
@@ -2210,7 +2222,7 @@
 
     specSuperclass isBehavior ifFalse:[
         specSuperclass isEmpty ifFalse:[
-            superclass := Smalltalk at:specSuperclass asSymbol
+            superclass := self resolveName:specSuperclass
         ] ifTrue:[
             specSuperclass := nil.
         ]
@@ -2316,24 +2328,14 @@
     self painter isModified ifTrue:[
         self warn:'the change have not yet been reinstalled.\\The browser will show the old interfaces code.' withCRs.
     ].
-
-    specClass isNil ifTrue:[
-        ^ self information:'no class yet'.
+    cls := self resolveName:specClass.
+
+    cls notNil ifTrue:[
+        SystemBrowser openInClass:cls
+    ] ifFalse:[
+        self information:'no class yet'.
     ].
 
-    specClass isBehavior ifFalse:[
-        cls := Smalltalk at:specClass asSymbol
-    ] ifTrue:[
-        cls := specClass
-    ].
-
-    cls isNil ifTrue:[
-        ^ self information:'no class yet'.
-    ].
-
-    SystemBrowser openInClass:cls
-
-    "Modified: 28.7.1997 / 18:30:13 / cg"
 !
 
 doFromClass
@@ -2374,7 +2376,8 @@
             ) accepted.
 
          accepted ifTrue:[
-            cls := Smalltalk classNamed:className value.
+            self resolveName:className value.
+
             cls isNil ifTrue:[
                 failed := true.
                 self warn:'no such class'.
@@ -2514,11 +2517,7 @@
         ^ self information:'no class or selector defined'.
     ].
 
-    specClass isBehavior ifFalse:[
-        cls := Smalltalk at:specClass asSymbol
-    ] ifTrue:[
-        cls := specClass
-    ].
+    cls := self resolveName:specClass.
 
     cls isNil ifTrue:[
         ^ self information:'class not existant'.