*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Thu, 22 Oct 2009 21:07:29 +0200
changeset 3812 f65a55aadf08
parent 3811 ebc2b9a0f94e
child 3813 0595ad4f2239
*** empty log message ***
AssistantApplication.st
--- a/AssistantApplication.st	Thu Oct 22 19:38:57 2009 +0200
+++ b/AssistantApplication.st	Thu Oct 22 21:07:29 2009 +0200
@@ -1,6 +1,6 @@
 "{ Package: 'stx:libwidg2' }"
 
-ApplicationModel subclass:#AssistantApplication
+ToolApplicationModel subclass:#AssistantApplication
 	instanceVariableNames:'currentPageSpecHolder backButtonEnabled forwardButtonEnabled
 		backButtonVisible forwardButtonVisible finishButtonVisible
 		finishButtonEnabled currentPageInfoHTMLHolder
@@ -13,93 +13,23 @@
 
 !AssistantApplication class methodsFor:'documentation'!
 
-documentation
-"
-    an easy to use framework for assistant-dialog applications.
-    These are multipage applications, in which the user is able to navigate
-    along achain of pages as specified in the AssistantSpec
-
-    see stx:doc/coding:DemoAssistant for a demo example.
-    see ProjectBuilderAssistantApplication for a concrete example.
-"
+documentation'
 ! !
 
 !AssistantApplication class methodsFor:'help'!
 
-flyByHelpSpec
-    <resource: #help>
-
-    ^ super flyByHelpSpec addPairsFrom:#(
-
-#backButton
-'Navigate to the previous page %(previousPageInfo)'
-
-#nextButton
-'Navigate to the next page %(nextPageInfo)'
-
-)
+hodsFor:'help'
 ! !
 
 !AssistantApplication class methodsFor:'image specs'!
 
-bulletIcon
-    "This resource specification was automatically generated
-     by the ImageEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the ImageEditor may not be able to read the specification."
-
-    "
-     self bulletIcon inspect
-     ImageEditor openOnClass:self andSelector:#bulletIcon
-     Icon flushCachedIcons
-    "
-
-    <resource: #image>
-
-    ^Icon
-        constantNamed:'AssistantApplication class bulletIcon'
-        ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@% @@BPA @@P@D@@ @@ @D@@D@A@@A@@ @@ @A@@P@@$@X@@@% @@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 84 84 84 170 170 170 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@<@O<@?0G? _>A?8G? O<@?0@<@@@@@@@@@b') ; yourself); yourself]
+:'image specs'
 !
 
-leftArrowIcon
-    "This resource specification was automatically generated
-     by the ImageEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the ImageEditor may not be able to read the specification."
-
-    "
-     self leftArrowIcon inspect
-     ImageEditor openOnClass:self andSelector:#leftArrowIcon
-     Icon flushCachedIcons
-    "
-
-    <resource: #image>
-
-    ^Icon
-        constantNamed:'AssistantApplication class leftArrowIcon'
-        ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@@@@G@@@@G??<@A???@@G@@@@@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 84 84 84 170 170 170 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@A@@L@A0@O@A?>O?9??''?>O?8_? <@A0@C@@D@@@@b') ; yourself); yourself]
+); yourself]
 !
 
-rightArrowIcon
-    "This resource specification was automatically generated
-     by the ImageEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the ImageEditor may not be able to read the specification."
-
-    "
-     self rightArrowIcon inspect
-     ImageEditor openOnClass:self andSelector:#rightArrowIcon
-     Icon flushCachedIcons
-    "
-
-    <resource: #image>
-
-    ^Icon
-        constantNamed:'AssistantApplication class rightArrowIcon'
-        ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@P@@@@M@@O??4@C??=@@@@M@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 84 84 84 170 170 170 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@ @C@@N@@<G?8_?1??''?>_?1?>@C0@N@@0@B@@@@b') ; yourself); yourself]
+); yourself]
 ! !
 
 !AssistantApplication class methodsFor:'interface specs'!
@@ -126,6 +56,7 @@
        (WindowSpec
           label: 'NewApplication'
           name: 'NewApplication'
+          min: (Point 534 440)
           bounds: (Rectangle 0 0 534 440)
           menu: mainMenu
         )
@@ -157,17 +88,19 @@
                             collection: (
                              (SequenceViewSpec
                                 name: 'PagesLabelList'
-                                layout: (LayoutFrame 0 0 0 0 0 1 0 0.7)
+                                layout: (LayoutFrame 0 0 0 0 0 1 0 0.6)
                                 level: 0
                                 enableChannel: false
                                 hasHorizontalScrollBar: true
                                 hasVerticalScrollBar: true
+                                miniScrollerHorizontal: true
+                                miniScrollerVertical: true
                                 useIndex: true
                                 sequenceList: pageLabelsInList
                               )
                              (HTMLViewSpec
                                 name: 'HTMLBrowser1'
-                                layout: (LayoutFrame 0 0 0 0.7 0 1 0 1)
+                                layout: (LayoutFrame 0 0 0 0.6 0 1 0 1)
                                 level: 0
                                 hasHorizontalScrollBar: true
                                 hasVerticalScrollBar: true
@@ -283,31 +216,43 @@
 
 !AssistantApplication class methodsFor:'menu specs'!
 
-mainMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:AssistantApplication andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(AssistantApplication mainMenu)) startUp
-    "
+enableChannel: finishButtonEnabled
+                          extent: (Point 65 22)
+                        )
+                       (ActionButtonSpec
+                          label: 'Cancel'
+                          name: 'Button8'
+                          translateLabel: true
+                          resizeForLabel: true
+                          model: doCancel
+                          extent: (Point 65 22)
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+            )
+           (LabelSpec
+              label: 'Label'
+              name: 'Label1'
+              layout: (LayoutFrame 1 0 -25 1 -1 1 -1 1)
+              level: -1
+              translateLabel: true
+              labelChannel: infoHolder
+              adjust: left
+            )
+           )
+         
+        )
+      )
+! !
 
-    <resource: #menu>
+!AssistantApplication class methodsFor:'required protocol'!
 
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: 'File'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Exit'
+label: 'Exit'
                   itemValue: closeRequest
                   translateLabel: true
                 )
@@ -347,23 +292,53 @@
       )
 ! !
 
-!AssistantApplication class methodsFor:'required protocol'!
-
-assistantSpec
-    "must return a sequenceable collection of assistantPageSpecs - one for each page"
-
-    self subclassResponsibility
-! !
-
 !AssistantApplication methodsFor:'actions'!
 
-canGoBackward
-    |currentPageSpec previousPageSpec|
+)
+         (MenuItem
+            label: 'Help'
+            translateLabel: true
+            startGroup: right
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Documentation'
+                  itemValue: openDocumentation
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'About this Application...'
+                  itemValue: openAboutThisApplication
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+!
 
-    "/ see if we are allowed to leave...
-    currentPageSpec := self currentPageSpec.
-    currentPageSpec canLeaveQuerySelector notNil ifTrue:[
-        (self perform:currentPageSpec canLeaveQuerySelector) ifFalse:[^ false].
+)
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+!
+
+ector) ifFalse:[^ false].
     ].
 
     "/ see if we are allowed to enter the next...
@@ -376,15 +351,27 @@
     ^ true
 !
 
-canGoForward
-    |currentPageSpec nextPageSpec|
+"/ see if we are allowed to enter the next...
+    previousPageSpec := self previousEnabledPageSpec.
+    previousPageSpec isNil ifTrue:[^ false].
 
-    self currentPageIndex == self numberOfPages ifTrue:[^ false].
+    previousPageSpec canEnterQuerySelector notNil ifTrue:[
+        (self perform:previousPageSpec canEnterQuerySelector) ifFalse:[^ false].
+    ].
+    ^ true
+!
 
-    "/ see if we are allowed to leave...
-    currentPageSpec := self currentPageSpec.
-    currentPageSpec canLeaveQuerySelector notNil ifTrue:[
-        (self perform:currentPageSpec canLeaveQuerySelector) ifFalse:[^ false].
+he next...
+    previousPageSpec := self previousEnabledPageSpec.
+    previousPageSpec isNil ifTrue:[^ false].
+
+    previousPageSpec canEnterQuerySelector notNil ifTrue:[
+        (self perform:previousPageSpec canEnterQuerySelector) ifFalse:[^ false].
+    ].
+    ^ true
+!
+
+lf perform:currentPageSpec canLeaveQuerySelector) ifFalse:[^ false].
     ].
 
     "/ see if we are allowed to enter the next...
@@ -395,23 +382,11 @@
         (self perform:nextPageSpec canEnterQuerySelector) ifFalse:[^ false].
     ].
     ^ true
-!
-
-doCancel
-    self closeRequest
-!
+! !
 
-doFinish
-    self closeRequest
-!
+!AssistantApplication methodsFor:'aspects'!
 
-goBackward
-    |currentPageSpec|
-
-    (self canGoBackward) ifFalse:[^ self].
-
-    currentPageSpec := self currentPageSpec.
-    currentPageSpec leaveCallbackSelector notNil ifTrue:[
+tPageSpec leaveCallbackSelector notNil ifTrue:[
         self perform:currentPageSpec leaveCallbackSelector
     ].
 
@@ -425,7 +400,28 @@
     self updateButtonEnableState.
 !
 
-goForward
+self perform:currentPageSpec leaveCallbackSelector
+    ].
+
+    self currentPageIndexHolder value:((self indexOfPreviousEnabledPageSpec) max:1).
+
+    currentPageSpec := self currentPageSpec.
+    currentPageSpec enterCallbackSelector notNil ifTrue:[
+        self perform:currentPageSpec enterCallbackSelector
+    ].
+
+    self updateButtonEnableState.
+!
+
+Spec := self currentPageSpec.
+    currentPageSpec enterCallbackSelector notNil ifTrue:[
+        self perform:currentPageSpec enterCallbackSelector
+    ].
+
+    self updateButtonEnableState.
+!
+
+oForward
     |currentPageSpec|
 
     (self canGoForward) ifFalse:[^ self].
@@ -443,131 +439,57 @@
     ].
 
     self updateButtonEnableState.
-! !
-
-!AssistantApplication methodsFor:'aspects'!
-
-assistantSpec
-    ^ self class assistantSpec
 !
 
-backButtonEnabled
-    <resource: #uiAspect>
+otNil ifTrue:[
+        self perform:currentPageSpec leaveCallbackSelector
+    ].
+
+    self currentPageIndexHolder value:(self indexOfNextEnabledPageSpec).
 
-    backButtonEnabled isNil ifTrue:[
-        backButtonEnabled := false asValue.
+    currentPageSpec := self currentPageSpec.
+    currentPageSpec enterCallbackSelector notNil ifTrue:[
+        self perform:currentPageSpec enterCallbackSelector
     ].
-    ^ backButtonEnabled.
+
+    self updateButtonEnableState.
 !
 
-backButtonLabelHolder
-    <resource: #uiAspect>
+Nil ifTrue:[
+        self perform:currentPageSpec enterCallbackSelector
+    ].
 
-    backButtonLabelHolder isNil ifTrue:[
-        backButtonLabelHolder := self backButtonLabel asValue.
-    ].
-    ^ backButtonLabelHolder.
+    self updateButtonEnableState.
+!
+
+assistantSpec
 !
 
-backButtonVisible
-    <resource: #uiAspect>
+!
 
-    backButtonVisible isNil ifTrue:[
-        backButtonVisible := true asValue.
-    ].
-    ^ backButtonVisible.
+backButtonLabelHolder.
 !
 
-currentPageIndexHolder
-    <resource: #uiAspect>
+ButtonVisible.
+!
 
-    currentPageIndexHolder isNil ifTrue:[
-        currentPageIndexHolder := 1 asValue.
-        currentPageIndexHolder onChangeSend:#updateCanvas to:self
+IndexHolder onChangeSend:#updateCanvas to:self
     ].
     ^ currentPageIndexHolder.
 !
 
-currentPageInfoHTMLHolder
-    <resource: #uiAspect>
-
-    currentPageInfoHTMLHolder isNil ifTrue:[
+il ifTrue:[
         currentPageInfoHTMLHolder := ValueHolder new.
     ].
     ^ currentPageInfoHTMLHolder.
 !
 
-currentPageSpecHolder
-    <resource: #uiAspect>
-
-    currentPageSpecHolder isNil ifTrue:[
+True:[
         currentPageSpecHolder := nil asValue.
     ].
     ^ currentPageSpecHolder.
 !
 
-finishButtonEnabled
-    <resource: #uiAspect>
-
-    finishButtonEnabled isNil ifTrue:[
-        finishButtonEnabled := false asValue.
-    ].
-    ^ finishButtonEnabled.
-!
-
-finishButtonVisible
-    <resource: #uiAspect>
-
-    finishButtonVisible isNil ifTrue:[
-        finishButtonVisible := false asValue.
-    ].
-    ^ finishButtonVisible.
-!
-
-forwardButtonEnabled
-    <resource: #uiAspect>
-
-    forwardButtonEnabled isNil ifTrue:[
-        forwardButtonEnabled := false asValue.
-    ].
-    ^ forwardButtonEnabled.
-!
-
-forwardButtonVisible
-    <resource: #uiAspect>
-
-    forwardButtonVisible isNil ifTrue:[
-        forwardButtonVisible := true asValue.
-    ].
-    ^ forwardButtonVisible.
-!
-
-nextButtonLabelHolder
-    <resource: #uiAspect>
-
-    nextButtonLabelHolder isNil ifTrue:[
-        nextButtonLabelHolder := self nextButtonLabel asValue.
-    ].
-    ^ nextButtonLabelHolder.
-!
-
-pageInfoHolder
-    <resource: #uiAspect>
-
-    pageInfoHolder isNil ifTrue:[
-        pageInfoHolder := nil asValue.
-    ].
-    ^ pageInfoHolder.
-!
-
-pageLabelsInList
-    pageLabelsInList isNil ifTrue:[
-        pageLabelsInList := List new.
-        pageLabelsInList contents:(self pageLabelsInListWithBullet).
-    ].
-    ^ pageLabelsInList
-!
-
 pageLabelsInListWithBullet
     |newList|
 
@@ -592,15 +514,37 @@
 
 !AssistantApplication methodsFor:'help'!
 
-flyByHelpTextForKey:aKey
-    <resource: #help>
+pageInfoHolder isNil ifTrue:[
+        pageInfoHolder := nil asValue.
+    ].
+    ^ pageInfoHolder.
+!
 
-    |text bindings nextSpec prevSpec|
+pageInfoHolder isNil ifTrue:[
+        pageInfoHolder := nil asValue.
+    ].
+    ^ pageInfoHolder.
+! !
+
+!AssistantApplication methodsFor:'initialization & release'!
 
-    text := super flyByHelpTextForKey:aKey.
+ith:(TextView defaultSelectionForegroundColor) on:(TextView defaultSelectionBackgroundColor) );
+                            icon:(self class rightArrowIcon);
+                            image2:(self class leftArrowIcon)
+                    ] ifFalse:[
+                        (self isPageEnabledAtIndex:index) ifFalse:[
+                            entry colorizeAllWith:(Button defaultDisabledForegroundColor) "Color grey".
+                        ] ifTrue:[
+                            entry
+                        ].
+                    ].
+                ].
+    ^ newList
+! !
 
-    nextSpec := self nextEnabledPageSpec.
-    prevSpec := self previousEnabledPageSpec.
+!AssistantApplication methodsFor:'look'!
+
+revSpec := self previousEnabledPageSpec.
 
     bindings := Dictionary new.
     bindings 
@@ -611,15 +555,14 @@
         put:(nextSpec notNil ifTrue:[ '"',nextSpec pageTitle,'"' ] ifFalse:['']).
 
     ^ self resources string:text withArgs:bindings.    
-! !
+!
 
-!AssistantApplication methodsFor:'initialization & release'!
+xtSpec notNil ifTrue:[ '"',nextSpec pageTitle,'"' ] ifFalse:['']).
 
-postBuildWith:aBuilder
-    |maxCanvasExtent|
+    ^ self resources string:text withArgs:bindings.    
+!
 
-    super postBuildWith:aBuilder.
-    self updateCanvas.
+self updateCanvas.
 
     maxCanvasExtent := (self assistantSpec 
                             collect:[:eachPageSpec | 
@@ -635,48 +578,58 @@
     self window extent:(maxCanvasExtent + (200 @ 40)).
 ! !
 
-!AssistantApplication methodsFor:'look'!
+!AssistantApplication methodsFor:'private'!
+
+|windowSpecSelector specArray windowSpec|
+
+                                windowSpecSelector := eachPageSpec windowSpecSelector.
+                                specArray := self perform:windowSpecSelector ifNotUnderstood:[self class perform:windowSpecSelector].
+                                windowSpec := specArray decodeAsLiteralArray.
+                                windowSpec window bounds extent.
+                            ]
+                       ) max.
 
-backButtonLabel
-    ^ LabelAndIcon 
-        label:(resources string:'Back')
-        icon:(self backButtonEnabled value
-                ifTrue:[ToolbarIconLibrary leftArrow24x24Icon]
-                ifFalse:[ToolbarIconLibrary leftArrow24x24disabledIcon])
+    self window extent:(maxCanvasExtent + (200 @ 40)).
+!
+
+[self class perform:windowSpecSelector].
+                                windowSpec := specArray decodeAsLiteralArray.
+                                windowSpec window bounds extent.
+                            ]
+                       ) max.
+
+    self window extent:(maxCanvasExtent + (200 @ 40)).
 !
 
-nextButtonLabel
-    ^ LabelAndTwoIcons new 
-        string:(resources string:'Next');
-        image2:(self forwardButtonEnabled value
-                ifTrue:[ToolbarIconLibrary rightArrow24x24Icon]
-                ifFalse:[ToolbarIconLibrary rightArrow24x24disabledIcon])
+windowSpec := specArray decodeAsLiteralArray.
+                                windowSpec window bounds extent.
+                            ]
+                       ) max.
+
+    self window extent:(maxCanvasExtent + (200 @ 40)).
 !
 
-pageLabels
-    ^ self assistantSpec collect:[:specEntry | specEntry pageTitle].
-! !
+windowSpec window bounds extent.
+                            ]
+                       ) max.
 
-!AssistantApplication methodsFor:'private'!
+    self window extent:(maxCanvasExtent + (200 @ 40)).
+!
 
-canFinish
-    |pageIndex pageSpec|
+Arrow24x24disabledIcon])
+!
 
-    pageIndex := self currentPageIndexHolder value.
-    pageSpec := self assistantSpec at:pageIndex.
-    ^ pageSpec canLeaveQuerySelector isNil
+ication methodsFor:'private'
+!
+
+isNil
     or:[ self perform:pageSpec canLeaveQuerySelector ]
 !
 
-currentPageIndex
-    ^ self currentPageIndexHolder value
+elf assistantSpec at:(self currentPageIndex).
 !
 
-currentPageSpec
-    ^ self assistantSpec at:(self currentPageIndex).
-!
-
-indexOfNextEnabledPageSpec
+c
     |delta currentPageIndex|
 
     currentPageIndex := self currentPageIndex.
@@ -693,65 +646,37 @@
     ^ nil
 !
 
-indexOfPreviousEnabledPageSpec
-    |delta currentPageIndex|
-
-    currentPageIndex := self currentPageIndex.
+ndex := self currentPageIndex.
     delta := 1.
     [ 
-        (currentPageIndex - delta) > 0
-        and:[ (self isPageEnabledAtIndex:(currentPageIndex - delta)) not ]
+        (currentPageIndex + delta) <= (self numberOfPages)
+        and:[ (self isPageEnabledAtIndex:(currentPageIndex + delta)) not ]
     ] whileTrue:[
         delta := delta + 1.
     ].
-    (currentPageIndex - delta) > 0 ifTrue:[
-        ^ (currentPageIndex - delta).
+    (currentPageIndex + delta) <= (self numberOfPages) ifTrue:[
+        ^ (currentPageIndex + delta).
     ].
     ^ nil
 !
 
-isPageEnabledAtIndex:index
-    |isEnabledSelector|
-
-    isEnabledSelector := (self assistantSpec at:index) isEnabledQuerySelector.
-    ^ isEnabledSelector isNil or:[ (self perform:isEnabledSelector) ]
-!
-
-nextEnabledPageSpec
-    |index|
-
-    index := self indexOfNextEnabledPageSpec.
-    index isNil ifTrue:[^ nil].
-    ^ self assistantSpec at:index.
-!
-
-nextPageSpec
-    ^ self assistantSpec at:(self currentPageIndex + 1).
-!
-
-numberOfPages
-    ^ self assistantSpec size
-!
-
-previousEnabledPageSpec
-    |index|
-
-    index := self indexOfPreviousEnabledPageSpec.
-    index isNil ifTrue:[^ nil].
-    ^ self assistantSpec at:index.
-!
-
-previousPageSpec
-    ^ self assistantSpec at:(self currentPageIndex - 1).
+tPageIndex + delta)) not ]
+    ] whileTrue:[
+        delta := delta + 1.
+    ].
+    (currentPageIndex + delta) <= (self numberOfPages) ifTrue:[
+        ^ (currentPageIndex + delta).
+    ].
+    ^ nil
 ! !
 
 !AssistantApplication methodsFor:'update'!
 
-updateButtonEnableState
-    self backButtonEnabled value:(self canGoBackward).
-    self forwardButtonEnabled value:(self canGoForward).
-    self backButtonLabelHolder value:(self backButtonLabel).
-    self nextButtonLabelHolder value:(self nextButtonLabel).
+.
+    (currentPageIndex + delta) <= (self numberOfPages) ifTrue:[
+        ^ (currentPageIndex + delta).
+    ].
+    ^ nil
 !
 
 updateCanvas
@@ -780,5 +705,5 @@
 !AssistantApplication class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg2/AssistantApplication.st,v 1.9 2009-10-22 17:38:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/AssistantApplication.st,v 1.10 2009-10-22 19:07:29 cg Exp $'
 ! !