set masterApplication ... in case of an ApplicationModel
authortm
Mon, 17 Jul 2000 12:24:43 +0200
changeset 1777 1c09f7e0a18a
parent 1776 e28ffcdd52a7
child 1778 51bbd960baf9
set masterApplication ... in case of an ApplicationModel
TabItem.st
--- a/TabItem.st	Mon Jul 17 09:56:33 2000 +0200
+++ b/TabItem.st	Mon Jul 17 12:24:43 2000 +0200
@@ -11,7 +11,7 @@
 "
 
 
-"{ Package: '.:stx/libwidg2' }"
+"{ Package: 'stx:libwidg2' }"
 
 Model subclass:#TabItem
 	instanceVariableNames:'rawLabel label enabled argument canvas adornments activeHelpText'
@@ -287,23 +287,41 @@
 canvas
     "returns the application or nil
     "
-    |view cls wsel ckey builder|
+    |view cls wsel ckey builder appl|
 
     canvas notNil ifTrue:[
         ^ canvas
     ].
+    builder := self adornmentAt:#builder.
 
     (ckey := self majorKey) notNil ifTrue:[
-        (cls := Smalltalk resolveName:ckey inClass:self class) isNil ifTrue:[
-            self majorKey:nil.
-          ^ nil
+        (appl := builder application) notNil ifTrue:[
+            (cls := appl resolveName:ckey) isNil ifTrue:[
+                canvas := appl perform:ckey ifNotUnderstood:nil
+            ]
+        ] ifFalse:[
+            cls := Smalltalk resolveName:ckey inClass:self class.
         ].
-        canvas := cls new.
+
+        canvas isNil ifTrue:[
+            cls isNil ifTrue:[
+                self majorKey:nil.
+              ^ nil
+            ].
+            canvas := cls new.
+        ].
 
         (canvas isKindOf:ApplicationModel) ifTrue:[
             view := SimpleView new.
             wsel := self minorKey ? #windowSpec.
-            builder := self adornmentAt:#builder ifAbsent:[ canvas createBuilder. canvas builder ].
+
+            canvas builder notNil ifTrue:[
+                builder := canvas builder
+            ].
+
+            (appl notNil and:[canvas masterApplication isNil]) ifTrue:[
+                canvas masterApplication:appl
+            ].
             view client:canvas spec:wsel builder:builder.
             canvas window:(self setupCanvasView:view).
         ] ifFalse:[
@@ -536,7 +554,7 @@
     "
     |appl key builder |
 
-    self createNewBuilder ifFalse:[builder := aBuilder].
+    builder := self createNewBuilder ifTrue:[UIBuilder new] ifFalse:[aBuilder].
     self adornmentAt:#builder put:builder.
 
     (self translateLabel and:[label isString]) ifTrue:[
@@ -551,10 +569,13 @@
         (key := self activeHelpKey) notNil ifTrue:[
             activeHelpText := appl helpTextForKey:key.
         ].
-        
+        builder application isNil ifTrue:[
+            builder application:appl
+        ].
+
         (self majorKey isNil and:[(key := self minorKey) notNil]) ifTrue:[
             canvas := SimpleView new.
-            canvas client:appl spec:key.
+            canvas client:appl spec:key builder:builder.
             canvas := self setupCanvasView:canvas.
         ]
     ].    
@@ -736,5 +757,5 @@
 !TabItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/TabItem.st,v 1.9 2000-04-13 16:59:40 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/TabItem.st,v 1.10 2000-07-17 10:24:43 tm Exp $'
 ! !