MenuEditor.st
changeset 1711 548d690e780f
parent 1702 ace326bd303f
child 1715 9eebdb3802aa
--- a/MenuEditor.st	Thu Apr 24 17:12:15 2003 +0200
+++ b/MenuEditor.st	Fri Apr 25 01:09:45 2003 +0200
@@ -1035,6 +1035,13 @@
             #hideMenuOnActivated: false
             #indication: #redefineAspectMethodsChannel
           )
+         #(#MenuItem
+            #activeHelpKey: #settingsRedefineAspectMethods
+            #label: 'AutoAccept on Selection-Change'
+            #translateLabel: true
+            #hideMenuOnActivated: false
+            #indication: #autoAcceptOnSelectionChange
+          )
          )
         nil
         nil
@@ -1506,6 +1513,10 @@
 
 !MenuEditor methodsFor:'aspects'!
 
+autoAcceptOnSelectionChange
+    ^ builder valueAspectFor:#autoAcceptOnSelectionChange initialValue:true
+!
+
 canCreateDelayedMenuChannel
     "boolean holder, true if the current selected item accepts a delayed menu
     "
@@ -1717,11 +1728,19 @@
 !
 
 update:something with:aParameter from:changedObject
+    |lbl|
+
     notifyDisabledCounter ~~ 0 ifTrue:[ ^ self ].
 
     changedObject == selectionHolder ifTrue:[ ^ self selectionChanged ].
     changedObject == tabHolder       ifTrue:[ ^ self tabChanged ].
 
+    changedObject == self autoAcceptOnSelectionChange ifTrue:[
+        lbl := changedObject value ifTrue:['Apply'] ifFalse:['OK'].
+        (builder componentAt:'okButton') label:(resources string:lbl).
+        ^ self
+    ].
+
     super update:something with:aParameter from:changedObject
 !
 
@@ -2093,6 +2112,15 @@
     aNoteBook tabLabelInset:16@4.
 !
 
+postBuildWith:aBuilder
+    super postBuildWith: aBuilder.
+
+    self autoAcceptOnSelectionChange addDependent:self.
+    self autoAcceptOnSelectionChange value ifTrue:[
+        (builder componentAt:'okButton') label:(resources string:'Apply')
+    ].
+!
+
 postOpenWith:aBuilder
     "reset keyboardProcessor for menuBar
     "
@@ -2238,18 +2266,27 @@
     "called whenever the selection changed; test whether
      current item is not modified ....
     "
-    |oldSelectedItem newSelectedItem|
+    |oldSelectedItem newSelectedItem anythingChanged|
 
     self valueOfEnablingCommitButtons value ifFalse:[
-	^ true
+        ^ true
     ].
     oldSelectedItem := self selectedItem.
     oldSelectedItem ifNil:[^ true].
 
     newSelectedItem := listOfItems at:anIndex ifAbsent:nil.
     oldSelectedItem == newSelectedItem ifTrue:[
-	^ true
+        ^ true
     ].
+
+    anythingChanged := self valueOfEnablingCommitButtons value.
+    anythingChanged ifTrue:[          
+        self autoAcceptOnSelectionChange value ifTrue:[
+            self accept.
+            ^ true
+        ].
+    ].
+
     ^ self askForItemModification
 !