NewChangesBrowser.st
changeset 10583 e2411142dc0c
parent 10247 8517600df5c5
child 10584 26c11c692527
--- a/NewChangesBrowser.st	Thu Aug 18 02:27:46 2011 +0200
+++ b/NewChangesBrowser.st	Thu Aug 18 09:50:25 2011 +0200
@@ -873,7 +873,6 @@
      #(Menu
         (
          (MenuItem
-            activeHelpKey: file
             label: 'File'
             translateLabel: true
             submenu: 
@@ -991,7 +990,6 @@
             )
           )
          (MenuItem
-            activeHelpKey: edit
             label: 'Delete'
             translateLabel: true
             submenu: 
@@ -1058,7 +1056,6 @@
             )
           )
          (MenuItem
-            activeHelpKey: test
             label: 'Search'
             translateLabel: true
             submenu: 
@@ -1094,7 +1091,6 @@
             )
           )
          (MenuItem
-            activeHelpKey: test
             label: 'Test'
             translateLabel: true
             submenu: 
@@ -1113,7 +1109,6 @@
             )
           )
          (MenuItem
-            activeHelpKey: settings
             label: 'Settings'
             translateLabel: true
             submenu: 
@@ -1217,7 +1212,6 @@
             )
           )
          (MenuItem
-            activeHelpKey: help
             label: 'MENU_Help'
             translateLabel: true
             startGroup: conditionalRight
@@ -2112,6 +2106,34 @@
     Processor addTimedBlock:autoUpdateBlock afterSeconds:5.
 !
 
+classNameAndClassFromNode:aTreeNode
+    |rcvr className changeClass|
+
+    rcvr := aTreeNode receiver.
+    rcvr isUnaryMessage ifTrue:[
+        self assert:(rcvr selector = 'class').
+
+        className := rcvr receiver name.
+        SourceCodeManagerError 
+            handle:[:ex | ]
+            do:[ changeClass := (Smalltalk classNamed:className) class ].
+        className := className , ' class'.
+        ^ className -> changeClass
+    ].
+
+    (rcvr type == #Nil) ifTrue:[
+        ^ 'nil' -> nil
+    ].
+
+    className := rcvr name.
+    SourceCodeManagerError 
+        handle:[:ex | ]
+        do:[ changeClass := Smalltalk classNamed:className ].
+    ^ className -> changeClass
+
+    "Created: / 18-08-2011 / 09:38:37 / cg"
+!
+
 classNameOfChange:aChange
     "returns the classname of aChange
      (for classChanges (i.e. xxx class), the non-metaClassName (i.e. xxx) is returned)"
@@ -2705,7 +2727,7 @@
     "reads the changes file, creates a list of header-lines (changeChunks)
      and a list of chunk-positions (changePositions).
      Starting with 2.10.3, the entries are multi-col entries;
-     the cols are:
+     the cols are:                                                    
         1   delta (only if comparing)
                 '+' -> new method (w.r.t. current state)
                 '-' -> removed method (w.r.t. current state)
@@ -2766,7 +2788,7 @@
 
             [aStream atEnd] whileFalse:[
                 |change changeDelta changeString changeType changeCategory
-                 line s l changeClass sawExcla category className selector
+                 line s l classAndName changeClass sawExcla category className selector
                  chunkText chunkPos sel oldValue|
 
                 change := Change new.
@@ -2857,14 +2879,8 @@
                                     sel := p selector.
                                 ].
                                 (sel == #removeSelector:) ifTrue:[
-                                    p receiver isUnaryMessage ifTrue:[
-                                        cls := p receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:cls) class.
-                                        cls := cls , ' class'.
-                                    ] ifFalse:[
-                                        cls := p receiver name.
-                                        changeClass := (Smalltalk classNamed:cls)
-                                    ].
+                                    classAndName := self classNameAndClassFromNode:p.
+                                    cls := classAndName key. changeClass := classAndName value.
                                     sel := (p args at:1) evaluate.
 
                                     DeltaInfoColumn ifTrue:[
@@ -2885,14 +2901,8 @@
                                 and:[p isMessage
                                 and:[p receiver isMessage
                                 and:[p receiver selector == #compiledMethodAt:]]]]) ifTrue:[
-                                    p receiver receiver isUnaryMessage ifTrue:[
-                                        cls := p receiver receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:cls) class.
-                                        cls := cls , ' class'.
-                                    ] ifFalse:[
-                                        cls := p receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:cls)
-                                    ].
+                                    classAndName := self classNameAndClassFromNode:p receiver.
+                                    cls := classAndName key. changeClass := classAndName value.
                                     (sel == #category:) ifTrue:[
                                         sel := (p receiver args at:1) evaluate.
                                         changeType := '(category change)'.
@@ -2936,19 +2946,8 @@
                             (p notNil and:[p ~~ #Error]) ifTrue:[
                                 sel := p selector.
                                 (sel == #methodsFor:) ifTrue:[
-                                    p receiver isUnaryMessage ifTrue:[
-                                        className := p receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:className) class.
-                                        className := className , ' class'.
-                                    ] ifFalse:[
-                                        (p receiver type == #Nil) 
-                                            ifTrue: 
-                                                [className := 'nil'.
-                                                changeClass := nil] 
-                                            ifFalse:
-                                                [className := p receiver name.
-                                                changeClass := Smalltalk classNamed:className]
-                                    ].
+                                    classAndName := self classNameAndClassFromNode:p.
+                                    className := classAndName key. changeClass := classAndName value.
                                     category := (p args at:1) evaluate.
                                 ].
                             ].
@@ -3010,11 +3009,7 @@
 
                                     DeltaInfoColumn ifTrue:[
                                         changeClass isNil ifFalse:[
-                                            changeClass isMeta ifTrue:[
-                                                cls := changeClass soleInstance
-                                            ] ifFalse:[
-                                                cls := changeClass
-                                            ].
+                                            cls := changeClass theNonMetaclass
                                         ].
 
                                         (changeClass isNil or:[cls isLoaded not]) ifTrue:[
@@ -3084,8 +3079,8 @@
 
     self checkIfFileHasChanged.
 
-    "Modified: / 30-07-1998 / 11:39:58 / cg"
     "Modified: / 16-11-2010 / 15:52:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-08-2011 / 09:45:23 / cg"
 !
 
 selectorOfMethodChange:aChange
@@ -3887,5 +3882,5 @@
 !NewChangesBrowser class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.33 2011-07-07 13:22:36 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.34 2011-08-18 07:50:25 cg Exp $'
 ! !