#FEATURE by cg
authorClaus Gittinger <cg@exept.de>
Wed, 20 Mar 2019 17:19:43 +0100
changeset 18704 615bfd40242e
parent 18703 91c116f548c9
child 18705 dea38d56c6e3
#FEATURE by cg class: Tools::NewSystemBrowser changed: #codeMenuRemoveInstanceVariable:inClass: #delayedUpdateCodeWithAutoSearch:scrollToTop:checkModified:
Tools__NewSystemBrowser.st
--- a/Tools__NewSystemBrowser.st	Sat Mar 16 14:54:13 2019 +0100
+++ b/Tools__NewSystemBrowser.st	Wed Mar 20 17:19:43 2019 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 2000 by eXept Software AG
               All Rights Reserved
@@ -24825,16 +24823,20 @@
                                         ]. 
                                         first := false.
                                         s nextPutAll:'Classes in package: ',eachPackage allBold.
-                                        defClass := eachPackage asPackageId projectDefinitionClass.
-                                        defClass isNil ifTrue:[
-                                            mthd := nil.
-                                        ] ifFalse:[    
-                                            mthd := defClass theMetaclass compiledMethodAt:#documentation.
-                                        ].    
-                                        (mthd isNil or:[mthd comment isNil]) ifTrue:[
-                                            s cr; nextPutLine:'    Sorry, the package does not seem to provide documentation'
-                                        ] ifFalse:[
-                                            s nextPutAll:(mthd comment).
+                                        (eachPackage = PackageId noProjectID) ifTrue:[
+                                            s cr; nextPutLine:'    Classes and methods found here have not yet been checked into the repository'
+                                       ] ifFalse:[    
+                                            defClass := eachPackage asPackageId projectDefinitionClass.
+                                            defClass isNil ifTrue:[
+                                                mthd := nil.
+                                            ] ifFalse:[    
+                                                mthd := defClass theMetaclass compiledMethodAt:#documentation.
+                                            ].    
+                                            (mthd isNil or:[mthd comment isNil]) ifTrue:[
+                                                s cr; nextPutLine:'    Sorry, the package does not seem to provide documentation'
+                                            ] ifFalse:[
+                                                s nextPutAll:(mthd comment).
+                                            ].    
                                         ].    
                                     ].    
                                 ].    
@@ -24900,7 +24902,7 @@
     self updateProtocolSelectionForChangedMethodSelection.
 
     "Created: / 13-06-2018 / 11:24:03 / Claus Gittinger"
-    "Modified (comment): / 03-03-2019 / 16:23:01 / Claus Gittinger"
+    "Modified: / 20-03-2019 / 17:17:42 / Claus Gittinger"
 !
 
 delayedVariableSelectionChanged
@@ -40227,6 +40229,19 @@
     methods := self class
                     findInstRefsTo:oldName
                     under:cls access:#readOrWrite.
+                    
+    "/ ST/X allows it temporarily (i.e. during refactoring)
+    "/ that an instvar is defined both in a superclass and in a
+    "/ subclass. When executed, the access will be to the lowest
+    "/ in the inheritance tree.
+    "/ (stc does not allow this, but during class-refactorings,
+    "/  it is convenient to allow this).
+    "/ so check, if it is really the instvar from here,
+    "/ which is going to be removed (i.e. if there is not another one)
+    methods := methods reject:[:m |
+                (m mclass whichClassDefinesInstVar:oldName) ~~ cls
+               ]. 
+                
     methods notEmpty ifTrue:[
         whatTypeOfMethods := 'method'.
         (methods conform:[:m |
@@ -40268,6 +40283,8 @@
     "/ refactoring := RemoveInstanceVariableRefactoring variable:oldName class:cls.
     "/ refactoring model name:('remove instvar %1 from %2' bindWith:oldName with:cls name).
     self performRefactoring:refactoring.
+
+    "Modified: / 20-03-2019 / 17:14:19 / Claus Gittinger"
 !
 
 codeMenuRemoveParameter
@@ -48944,7 +48961,7 @@
     dummyChangeSet := ChangeSet new addAll:previousMethods; yourself.
     dummyChangeSet reverse.  "/ youngest first.
     browser := (UserPreferences current changeSetBrowserClass) openOn:dummyChangeSet.
-    browser label:(resources string:'Previous Versions of %1' with:(m whoStringWith:' » ')).
+    browser label:(resources string:'Previous Versions of %1' with:(m whoStringWith:' » ')).
     browser perform:#rightCodeLabel: with:'Previous Version' ifNotUnderstood:[].
     browser readOnly:true.
 
@@ -49171,7 +49188,7 @@
 
         self activityNotification:nil.
         browser := (UserPreferences current changeSetBrowserClass) openOn:previousMethods.
-        browser window label:(resources string:'Revisions of %1 » %2' with:mclass name with:mselector).
+        browser window label:(resources string:'Revisions of %1 » %2' with:mclass name with:mselector).
         browser readOnly:true.
     ].
 
@@ -53857,7 +53874,7 @@
             label:[:chg | 
                 |lbl|
                 "/ lbl := chg printString
-                lbl := (chg className ? '???') , ' » ' , (chg selector  ? '???') allBold.
+                lbl := (chg className ? '???') , ' » ' , (chg selector  ? '???') allBold.
                 (chg isMethodChange and:[chg changeMethod isNil]) ifTrue:[
                     lbl := lbl asText allStrikedOut,' ','(removed)' allItalic.
                 ].