NewChangesBrowser.st
changeset 10583 e2411142dc0c
parent 10247 8517600df5c5
child 10584 26c11c692527
equal deleted inserted replaced
10582:83776c1cdb25 10583:e2411142dc0c
   871 
   871 
   872     ^ 
   872     ^ 
   873      #(Menu
   873      #(Menu
   874         (
   874         (
   875          (MenuItem
   875          (MenuItem
   876             activeHelpKey: file
       
   877             label: 'File'
   876             label: 'File'
   878             translateLabel: true
   877             translateLabel: true
   879             submenu: 
   878             submenu: 
   880            (Menu
   879            (Menu
   881               (
   880               (
   989               nil
   988               nil
   990               nil
   989               nil
   991             )
   990             )
   992           )
   991           )
   993          (MenuItem
   992          (MenuItem
   994             activeHelpKey: edit
       
   995             label: 'Delete'
   993             label: 'Delete'
   996             translateLabel: true
   994             translateLabel: true
   997             submenu: 
   995             submenu: 
   998            (Menu
   996            (Menu
   999               (
   997               (
  1056               nil
  1054               nil
  1057               nil
  1055               nil
  1058             )
  1056             )
  1059           )
  1057           )
  1060          (MenuItem
  1058          (MenuItem
  1061             activeHelpKey: test
       
  1062             label: 'Search'
  1059             label: 'Search'
  1063             translateLabel: true
  1060             translateLabel: true
  1064             submenu: 
  1061             submenu: 
  1065            (Menu
  1062            (Menu
  1066               (
  1063               (
  1092               nil
  1089               nil
  1093               nil
  1090               nil
  1094             )
  1091             )
  1095           )
  1092           )
  1096          (MenuItem
  1093          (MenuItem
  1097             activeHelpKey: test
       
  1098             label: 'Test'
  1094             label: 'Test'
  1099             translateLabel: true
  1095             translateLabel: true
  1100             submenu: 
  1096             submenu: 
  1101            (Menu
  1097            (Menu
  1102               (
  1098               (
  1111               nil
  1107               nil
  1112               nil
  1108               nil
  1113             )
  1109             )
  1114           )
  1110           )
  1115          (MenuItem
  1111          (MenuItem
  1116             activeHelpKey: settings
       
  1117             label: 'Settings'
  1112             label: 'Settings'
  1118             translateLabel: true
  1113             translateLabel: true
  1119             submenu: 
  1114             submenu: 
  1120            (Menu
  1115            (Menu
  1121               (
  1116               (
  1215               nil
  1210               nil
  1216               nil
  1211               nil
  1217             )
  1212             )
  1218           )
  1213           )
  1219          (MenuItem
  1214          (MenuItem
  1220             activeHelpKey: help
       
  1221             label: 'MENU_Help'
  1215             label: 'MENU_Help'
  1222             translateLabel: true
  1216             translateLabel: true
  1223             startGroup: conditionalRight
  1217             startGroup: conditionalRight
  1224             submenuChannel: menuHelp
  1218             submenuChannel: menuHelp
  1225           )
  1219           )
  2110 	]
  2104 	]
  2111     ].
  2105     ].
  2112     Processor addTimedBlock:autoUpdateBlock afterSeconds:5.
  2106     Processor addTimedBlock:autoUpdateBlock afterSeconds:5.
  2113 !
  2107 !
  2114 
  2108 
       
  2109 classNameAndClassFromNode:aTreeNode
       
  2110     |rcvr className changeClass|
       
  2111 
       
  2112     rcvr := aTreeNode receiver.
       
  2113     rcvr isUnaryMessage ifTrue:[
       
  2114         self assert:(rcvr selector = 'class').
       
  2115 
       
  2116         className := rcvr receiver name.
       
  2117         SourceCodeManagerError 
       
  2118             handle:[:ex | ]
       
  2119             do:[ changeClass := (Smalltalk classNamed:className) class ].
       
  2120         className := className , ' class'.
       
  2121         ^ className -> changeClass
       
  2122     ].
       
  2123 
       
  2124     (rcvr type == #Nil) ifTrue:[
       
  2125         ^ 'nil' -> nil
       
  2126     ].
       
  2127 
       
  2128     className := rcvr name.
       
  2129     SourceCodeManagerError 
       
  2130         handle:[:ex | ]
       
  2131         do:[ changeClass := Smalltalk classNamed:className ].
       
  2132     ^ className -> changeClass
       
  2133 
       
  2134     "Created: / 18-08-2011 / 09:38:37 / cg"
       
  2135 !
       
  2136 
  2115 classNameOfChange:aChange
  2137 classNameOfChange:aChange
  2116     "returns the classname of aChange
  2138     "returns the classname of aChange
  2117      (for classChanges (i.e. xxx class), the non-metaClassName (i.e. xxx) is returned)"
  2139      (for classChanges (i.e. xxx class), the non-metaClassName (i.e. xxx) is returned)"
  2118 
  2140 
  2119     |name|
  2141     |name|
  2703 
  2725 
  2704 readChangesFileInBackground:inBackground
  2726 readChangesFileInBackground:inBackground
  2705     "reads the changes file, creates a list of header-lines (changeChunks)
  2727     "reads the changes file, creates a list of header-lines (changeChunks)
  2706      and a list of chunk-positions (changePositions).
  2728      and a list of chunk-positions (changePositions).
  2707      Starting with 2.10.3, the entries are multi-col entries;
  2729      Starting with 2.10.3, the entries are multi-col entries;
  2708      the cols are:
  2730      the cols are:                                                    
  2709         1   delta (only if comparing)
  2731         1   delta (only if comparing)
  2710                 '+' -> new method (w.r.t. current state)
  2732                 '+' -> new method (w.r.t. current state)
  2711                 '-' -> removed method (w.r.t. current state)
  2733                 '-' -> removed method (w.r.t. current state)
  2712                 '?' -> class does not exist currently
  2734                 '?' -> class does not exist currently
  2713                 '=' -> change is same as current methods source
  2735                 '=' -> change is same as current methods source
  2764 
  2786 
  2765             excla := aStream class chunkSeparator.
  2787             excla := aStream class chunkSeparator.
  2766 
  2788 
  2767             [aStream atEnd] whileFalse:[
  2789             [aStream atEnd] whileFalse:[
  2768                 |change changeDelta changeString changeType changeCategory
  2790                 |change changeDelta changeString changeType changeCategory
  2769                  line s l changeClass sawExcla category className selector
  2791                  line s l classAndName changeClass sawExcla category className selector
  2770                  chunkText chunkPos sel oldValue|
  2792                  chunkText chunkPos sel oldValue|
  2771 
  2793 
  2772                 change := Change new.
  2794                 change := Change new.
  2773                 "
  2795                 "
  2774                  get a chunk (separated by excla)
  2796                  get a chunk (separated by excla)
  2855                                  and:[p ~~ #Error
  2877                                  and:[p ~~ #Error
  2856                                  and:[p isMessage]]) ifTrue:[
  2878                                  and:[p isMessage]]) ifTrue:[
  2857                                     sel := p selector.
  2879                                     sel := p selector.
  2858                                 ].
  2880                                 ].
  2859                                 (sel == #removeSelector:) ifTrue:[
  2881                                 (sel == #removeSelector:) ifTrue:[
  2860                                     p receiver isUnaryMessage ifTrue:[
  2882                                     classAndName := self classNameAndClassFromNode:p.
  2861                                         cls := p receiver receiver name.
  2883                                     cls := classAndName key. changeClass := classAndName value.
  2862                                         changeClass := (Smalltalk classNamed:cls) class.
       
  2863                                         cls := cls , ' class'.
       
  2864                                     ] ifFalse:[
       
  2865                                         cls := p receiver name.
       
  2866                                         changeClass := (Smalltalk classNamed:cls)
       
  2867                                     ].
       
  2868                                     sel := (p args at:1) evaluate.
  2884                                     sel := (p args at:1) evaluate.
  2869 
  2885 
  2870                                     DeltaInfoColumn ifTrue:[
  2886                                     DeltaInfoColumn ifTrue:[
  2871                                         (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
  2887                                         (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
  2872                                             changeDelta := '?'
  2888                                             changeDelta := '?'
  2883                                 ].
  2899                                 ].
  2884                                 (p notNil and:[p ~~ #Error
  2900                                 (p notNil and:[p ~~ #Error
  2885                                 and:[p isMessage
  2901                                 and:[p isMessage
  2886                                 and:[p receiver isMessage
  2902                                 and:[p receiver isMessage
  2887                                 and:[p receiver selector == #compiledMethodAt:]]]]) ifTrue:[
  2903                                 and:[p receiver selector == #compiledMethodAt:]]]]) ifTrue:[
  2888                                     p receiver receiver isUnaryMessage ifTrue:[
  2904                                     classAndName := self classNameAndClassFromNode:p receiver.
  2889                                         cls := p receiver receiver receiver name.
  2905                                     cls := classAndName key. changeClass := classAndName value.
  2890                                         changeClass := (Smalltalk classNamed:cls) class.
       
  2891                                         cls := cls , ' class'.
       
  2892                                     ] ifFalse:[
       
  2893                                         cls := p receiver receiver name.
       
  2894                                         changeClass := (Smalltalk classNamed:cls)
       
  2895                                     ].
       
  2896                                     (sel == #category:) ifTrue:[
  2906                                     (sel == #category:) ifTrue:[
  2897                                         sel := (p receiver args at:1) evaluate.
  2907                                         sel := (p receiver args at:1) evaluate.
  2898                                         changeType := '(category change)'.
  2908                                         changeType := '(category change)'.
  2899                                         changeString := self contractClass:cls selector:sel to:maxLen.
  2909                                         changeString := self contractClass:cls selector:sel to:maxLen.
  2900                                     ].
  2910                                     ].
  2934                             p := Parser parseExpression:chunkText inNameSpace:Smalltalk.
  2944                             p := Parser parseExpression:chunkText inNameSpace:Smalltalk.
  2935 
  2945 
  2936                             (p notNil and:[p ~~ #Error]) ifTrue:[
  2946                             (p notNil and:[p ~~ #Error]) ifTrue:[
  2937                                 sel := p selector.
  2947                                 sel := p selector.
  2938                                 (sel == #methodsFor:) ifTrue:[
  2948                                 (sel == #methodsFor:) ifTrue:[
  2939                                     p receiver isUnaryMessage ifTrue:[
  2949                                     classAndName := self classNameAndClassFromNode:p.
  2940                                         className := p receiver receiver name.
  2950                                     className := classAndName key. changeClass := classAndName value.
  2941                                         changeClass := (Smalltalk classNamed:className) class.
       
  2942                                         className := className , ' class'.
       
  2943                                     ] ifFalse:[
       
  2944                                         (p receiver type == #Nil) 
       
  2945                                             ifTrue: 
       
  2946                                                 [className := 'nil'.
       
  2947                                                 changeClass := nil] 
       
  2948                                             ifFalse:
       
  2949                                                 [className := p receiver name.
       
  2950                                                 changeClass := Smalltalk classNamed:className]
       
  2951                                     ].
       
  2952                                     category := (p args at:1) evaluate.
  2951                                     category := (p args at:1) evaluate.
  2953                                 ].
  2952                                 ].
  2954                             ].
  2953                             ].
  2955 
  2954 
  2956                             done := false.
  2955                             done := false.
  3008                                         change selector:sel.
  3007                                         change selector:sel.
  3009                                     ].
  3008                                     ].
  3010 
  3009 
  3011                                     DeltaInfoColumn ifTrue:[
  3010                                     DeltaInfoColumn ifTrue:[
  3012                                         changeClass isNil ifFalse:[
  3011                                         changeClass isNil ifFalse:[
  3013                                             changeClass isMeta ifTrue:[
  3012                                             cls := changeClass theNonMetaclass
  3014                                                 cls := changeClass soleInstance
       
  3015                                             ] ifFalse:[
       
  3016                                                 cls := changeClass
       
  3017                                             ].
       
  3018                                         ].
  3013                                         ].
  3019 
  3014 
  3020                                         (changeClass isNil or:[cls isLoaded not]) ifTrue:[
  3015                                         (changeClass isNil or:[cls isLoaded not]) ifTrue:[
  3021                                             changeDelta := '?'
  3016                                             changeDelta := '?'
  3022                                         ] ifFalse:[
  3017                                         ] ifFalse:[
  3082     self filterField raise.
  3077     self filterField raise.
  3083     self filterLabel label: 'Filter:'.
  3078     self filterLabel label: 'Filter:'.
  3084 
  3079 
  3085     self checkIfFileHasChanged.
  3080     self checkIfFileHasChanged.
  3086 
  3081 
  3087     "Modified: / 30-07-1998 / 11:39:58 / cg"
       
  3088     "Modified: / 16-11-2010 / 15:52:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  3082     "Modified: / 16-11-2010 / 15:52:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  3083     "Modified: / 18-08-2011 / 09:45:23 / cg"
  3089 !
  3084 !
  3090 
  3085 
  3091 selectorOfMethodChange:aChange
  3086 selectorOfMethodChange:aChange
  3092     "returns the selector of the method change, or nil if it is not a method change"
  3087     "returns the selector of the method change, or nil if it is not a method change"
  3093 
  3088 
  3885 ! !
  3880 ! !
  3886 
  3881 
  3887 !NewChangesBrowser class methodsFor:'documentation'!
  3882 !NewChangesBrowser class methodsFor:'documentation'!
  3888 
  3883 
  3889 version_CVS
  3884 version_CVS
  3890     ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.33 2011-07-07 13:22:36 vrany Exp $'
  3885     ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.34 2011-08-18 07:50:25 cg Exp $'
  3891 ! !
  3886 ! !