Methods moved to an instance side (with forwarding from class side)
authorvrany
Mon, 10 Oct 2011 15:31:33 +0200
changeset 2556 7d79bba1a1fa
parent 2555 86df1e00019f
child 2557 54cac303b99a
Methods moved to an instance side (with forwarding from class side)
SourceCodeManagerUtilities.st
--- a/SourceCodeManagerUtilities.st	Thu Oct 06 17:25:12 2011 +0200
+++ b/SourceCodeManagerUtilities.st	Mon Oct 10 15:31:33 2011 +0200
@@ -12,7 +12,7 @@
 "{ Package: 'stx:libbasic3' }"
 
 Object subclass:#SourceCodeManagerUtilities
-	instanceVariableNames:''
+	instanceVariableNames:'manager'
 	classVariableNames:'LastSourceLogMessage LastModule LastPackage YesToAllQuery
 		YesToAllNotification'
 	poolDictionaries:''
@@ -52,6 +52,15 @@
 "
 ! !
 
+!SourceCodeManagerUtilities class methodsFor:'instance creation'!
+
+forManager: aSourceCodeManager
+
+    ^self new setManager: aSourceCodeManager
+
+    "Created: / 10-10-2011 / 11:45:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !SourceCodeManagerUtilities class methodsFor:'Signal constants'!
 
 yesToAllNotification
@@ -70,6 +79,14 @@
 
 !SourceCodeManagerUtilities class methodsFor:'accessing'!
 
+default
+
+    Default isNil ifTrue:[Default := self new].
+    ^Default
+
+    "Created: / 10-10-2011 / 11:28:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 lastModule
     "return the value of the static variable 'LastModule' (automatically generated)"
 
@@ -94,6 +111,23 @@
     LastPackage := something.
 ! !
 
+!SourceCodeManagerUtilities class methodsFor:'error handling'!
+
+doesNotUnderstand: aMessage
+
+    (self default respondsTo: aMessage selector) ifTrue:[
+        "Bad, method moved to instance side but not forwarded"
+        self breakPoint: #jv.
+        self breakPoint: #cg.
+
+        ^aMessage sendTo: self default
+    ] ifFalse:[
+        ^super doesNotUnderstand: aMessage
+    ]
+
+    "Created: / 10-10-2011 / 14:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !SourceCodeManagerUtilities class methodsFor:'resources'!
 
 resourcePackage
@@ -116,6 +150,714 @@
 !
 
 nameOfExtensionsContainer
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default nameOfExtensionsContainer
+!
+
+setPackageOfAllMethodsIn:aClass to:aPackage
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default setPackageOfAllMethodsIn:aClass to:aPackage
+
+    "Modified: / 10-10-2011 / 14:00:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setPackageOfAllMethodsInChangeSet:aChangeSet to:aPackage
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default setPackageOfAllMethodsInChangeSet:aChangeSet to:aPackage
+
+    "Created: / 10-10-2011 / 14:00:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sourceCodeManagerFor:aClass
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default sourceCodeManagerFor:aClass
+!
+
+sourceCodeOfClass:aClass
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default sourceCodeOfClass:aClass
+!
+
+versionString:a isLessThan:b
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default versionString:a isLessThan:b
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-cvs'!
+
+changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision using:aSourceCodeManager
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision using:aSourceCodeManager
+!
+
+changeSetForExtensionMethodsForPackage:packageToCheckOut revision:revisionOrNil orAskForRevision:askForRevision using:aSourceCodeManager
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default changeSetForExtensionMethodsForPackage:packageToCheckOut revision:revisionOrNil orAskForRevision:askForRevision using:aSourceCodeManager
+!
+
+checkForExistingModule:module directory:directory container:containerFileName using:mgr allowCreate:allowCreate
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkForExistingModule:module directory:directory container:containerFileName using:mgr allowCreate:allowCreate
+!
+
+checkForExistingModule:module directory:directory using:mgr allowCreate:allowCreate
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkForExistingModule:module directory:directory using:mgr allowCreate:allowCreate
+!
+
+checkForExistingModule:module using:mgr allowCreate:allowCreate
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkForExistingModule:module using:mgr allowCreate:allowCreate
+!
+
+checkinClass:aClass
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkinClass:aClass
+!
+
+checkinClass:aClass withInfo:aLogInfoOrNil
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkinClass:aClass withInfo:aLogInfoOrNil
+!
+
+checkinClass:aClass withInfo:aLogInfoOrNil withCheck:doCheckClass
+    "check a class into the source repository.
+     If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
+     If doCheckClass is true, the class is checked for send of halts etc."
+
+    |logMessage checkinInfo mgr pri resources|
+
+    aClass isLoaded ifFalse:[
+        self information:(resources string:'Cannot checkin unloaded classes (%1)' with:aClass name).
+        ^ false.
+    ].
+
+    mgr := self sourceCodeManagerFor:aClass.
+    mgr isNil ifTrue:[
+        ^ false
+    ].
+
+    self ensureCorrectVersionMethodsInClass:aClass using:mgr.
+
+    (self 
+        getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo:aLogInfoOrNil 
+        forClass:aClass
+        valuesInto:[:logMessageRet :checkinInfoRet |
+            logMessage := logMessageRet.
+            checkinInfo := checkinInfoRet.
+        ]
+    ) ifFalse:[^ false].
+
+    resources := self classResources.
+
+    (self classIsNotYetInRepository:aClass withManager:mgr) ifTrue:[
+        (self createSourceContainerForClass:aClass) ifFalse:[
+"/            self warn:'did not create a container for ''' , aClass name , ''''.
+            ^ false
+        ].
+        ^ true.
+    ].
+
+    self activityNotification:(resources string:'checking in %1' with:aClass name).
+    pri := Processor activePriority.
+    Processor activeProcess withPriority:pri-1 to:pri
+    do:[
+        |revision aborted freshCreated|
+
+        freshCreated := false.
+        revision := aClass revision.
+        revision isNil ifTrue:[ 
+            "/ mhmh - check if it has a container.
+            (mgr checkForExistingContainerForClass:aClass) ifFalse:[
+                (self createSourceContainerForClass:aClass) ifFalse:[
+                    self warn:'Did not create/change repository container for ''' , aClass name allBold , ''''.
+                    ^ false.
+                ].
+                freshCreated := true.
+            ]
+        ].
+
+        doCheckClass value ifTrue:[
+            "/ check if the class contains halts, error-sends etc.
+            (self checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:doCheckClass) ifFalse:[
+                ^ false
+            ].
+        ].
+
+        freshCreated ifFalse:[
+            aborted := false.
+            AbortOperationRequest handle:[:ex |
+                aborted := true.
+                ex return.
+            ] do:[
+                |checkinState cause|
+                checkinState := false.
+                cause := ''.
+                [
+                    checkinState := mgr checkinClass:aClass logMessage:logMessage
+                ] on:SourceCodeManagerError do:[:ex| 
+                    cause := ex description.
+                    ex proceed.
+                ].
+
+                checkinState ifFalse:[
+                    Transcript showCR:'checkin of ''' , aClass name , ''' failed - ', cause.
+                    self warn:(resources stringWithCRs:'Checkin of "%1" failed\\' with:aClass name allBold),cause.
+                    ^ false.
+                ].
+                checkinInfo notNil ifTrue:[
+                    checkinInfo isStable ifTrue:[
+                        "set stable tag for class that has been checked in"
+                        self tagClass:aClass as:#stable.
+                    ].
+                    checkinInfo tagIt ifTrue:[
+                        "set an additional tag for class that has been checked in"
+                        self tagClass:aClass as:(checkinInfo tag).
+                    ].
+                ].
+            ].
+            aborted ifTrue:[  |con|
+                Transcript showCR:'Checkin of ''' , aClass name , ''' aborted'.
+
+                AbortAllOperationWantedQuery query ifTrue:[
+                    (Dialog 
+                        confirm:(resources stringWithCRs:'Checkin of "%1" aborted.\\Cancel all ?' with:aClass name)
+                        default:false)
+                    ifTrue:[
+                        AbortAllOperationRequest raise.
+                    ]
+                ].
+                ^ false.
+            ].
+        ].
+    ].
+    ^ true
+
+    "Modified: / 06-05-2011 / 10:32:55 / cg"
+!
+
+checkinClasses:aCollectionOfClass
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkinClasses:aCollectionOfClass
+!
+
+checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrNil
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrNil
+!
+
+checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrStringNil withCheck:doCheckClasses
+    "check a bunch of classes into the source repository.
+     If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message."
+
+    |classes allClasses checkinInfoOrString resources yesOrNoToAll unchangedClasses|
+
+    "/ ignore private classes
+    classes := aCollectionOfClasses select:[:aClass | aClass owningClass isNil].
+    classes isEmpty ifTrue:[
+        self information:'Only private classes given - nothing checked in.'.
+        ^ self
+    ].
+    classes := classes select:[:aClass | aClass isLoaded].
+    classes isEmpty ifTrue:[
+        self information:'Only unloaded classes given - nothing checked in.'.
+        ^ self
+    ].
+
+    classes size == 1 ifTrue:[
+        ^ self checkinClass:classes first withInfo:aLogInfoOrStringNil withCheck:doCheckClasses.
+    ].
+
+    resources := self classResources.
+
+    "ask once, for all classes"
+    aLogInfoOrStringNil isNil ifTrue:[
+        checkinInfoOrString := self 
+                        getCheckinInfoFor:(resources string:'%1 classes to checkin' with:aCollectionOfClasses size)
+                        initialAnswer:nil
+                        withQuickOption:true.
+        checkinInfoOrString isNil ifTrue:[^ self].
+    ] ifFalse:[
+        checkinInfoOrString := aLogInfoOrStringNil.
+    ].
+
+    allClasses := classes.    
+    checkinInfoOrString quickCheckIn ifTrue:[
+        classes := classes select:[:aClass | aClass hasUnsavedChanges].
+        classes isEmpty ifTrue:[ Dialog information:'no changes to checkin (quickCheckIn)' ]
+    ].
+
+    "abortAll is handled, and also asked for here!!"
+    AbortAllOperationRequest handleAndAnswerQueryIn:[
+        classes notEmpty ifTrue:[
+            self yesToAllNotification handle:[:ex |
+                yesOrNoToAll := ex parameter.
+                ex proceed
+            ] do:[
+                self yesToAllQuery handle:[:ex |
+                    ex proceedWith:yesOrNoToAll
+                ] do:[
+                    classes do:[:aClass |
+                        self activityNotification:(resources string:'checking in %1' with:aClass name).
+                        "/ ca does not want boxes to pop up all over ...
+                        UserInformation handle:[:ex |
+                            Transcript showCR:ex description.
+                            ex proceed.
+                        ] do:[
+                            AbortOperationRequest catch:[
+                                self 
+                                    checkinClass:aClass 
+                                    withInfo:checkinInfoOrString 
+                                    withCheck:doCheckClasses
+                            ]
+                        ].
+                    ].
+                ]
+            ].
+        ].
+
+        (checkinInfoOrString isStable or:[checkinInfoOrString tagIt])
+        ifTrue:[
+            "/mhmh - but tag should be set on all (even unchanged ones)
+            "/ the other onces have already been tagged
+            unchangedClasses := allClasses select:[:eachClass | (classes includes:eachClass) not].
+
+            "mhmh - could still have to tag them"
+            checkinInfoOrString isStable ifTrue:[
+                unchangedClasses do:[:eachClass |
+                    self tagClass:eachClass as:#stable.
+                ].
+            ].
+            checkinInfoOrString tagIt ifTrue:[
+                unchangedClasses do:[:eachClass |
+                    self tagClass:eachClass as:(checkinInfoOrString tag).
+                ].
+            ].
+        ].
+    ].
+
+    "Modified: / 20-08-2011 / 14:00:13 / cg"
+!
+
+checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
+!
+
+checkoutClass:aClass askForMerge:askForMerge
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkoutClass:aClass askForMerge:askForMerge
+!
+
+checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge
+!
+
+checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge askForConfirmation:askForConfirmation
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge askForConfirmation:askForConfirmation
+!
+
+checkoutExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision askForMerge:askForMerge using:aSourceCodeManager
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkoutExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision askForMerge:askForMerge using:aSourceCodeManager
+!
+
+compareClassWithRepository:aClass
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default compareClassWithRepository:aClass
+!
+
+compareClassWithRepository:aClass askForRevision:askForRevision
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default compareClassWithRepository:aClass askForRevision:askForRevision
+!
+
+compareProject:aProject withRepositoryVersionFrom:aDateOrNilForNewest
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default compareProject:aProject withRepositoryVersionFrom:aDateOrNilForNewest
+!
+
+compareProjectWithRepository:aProject
+    ^ self compareProject:aProject withRepositoryVersionFrom:nil
+!
+
+createSourceContainerForClass:aClass
+    "let user specify the source-repository values for aClass"
+
+    |resources|
+
+    resources := self classResources.
+    ^ self 
+        defineSourceContainerForClass:aClass 
+        title:(resources string:'Repository information for %1' with:aClass name)
+        text:(resources string:'Create new repository container for ''%1''' with:aClass name allBold)
+        createDirectories:true
+        createContainer:true.
+!
+
+defineSourceContainerForClass:aClass title:title text:boxText createDirectories:createDirs createContainer:createContainer
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default defineSourceContainerForClass:aClass title:title text:boxText createDirectories:createDirs createContainer:createContainer
+!
+
+diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest
+!
+
+ensureCorrectVersionMethodsInClass:aClass using:aManager
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default ensureCorrectVersionMethodsInClass:aClass using:aManager
+!
+
+getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo:aLogInfoOrNil forClass:aClass valuesInto:aBlock
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo:aLogInfoOrNil forClass:aClass valuesInto:aBlock
+!
+
+removeSourceContainerForClass:aClass
+    "show container & let user confirm twice."
+
+    ^ self removeSourceContainerForClass:aClass confirm:true warn:true
+!
+
+removeSourceContainerForClass:aClass confirm:doConfirm warn:doWarn
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default removeSourceContainerForClass:aClass confirm:doConfirm warn:doWarn
+!
+
+repositoryLogOf:aClass onto:aStream
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default repositoryLogOf:aClass onto:aStream
+!
+
+repositoryLogOf:aClass short:shortOrNot onto:aStream
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default repositoryLogOf:aClass short:shortOrNot onto:aStream
+!
+
+tagClass:aClass as:tag
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default tagClass:aClass as:tag
+!
+
+tagClasses:aCollectionOfClasses as:tag
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default tagClasses:aCollectionOfClasses as:tag
+!
+
+tagPath:aPath as:tag using:aManager
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default tagPath:aPath as:tag using:aManager
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-helpers'!
+
+getMethodVersionsOfClass:aClass selector:selector numberOfRevisions:numberOfRevisionsOrNil
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default getMethodVersionsOfClass:aClass selector:selector numberOfRevisions:numberOfRevisionsOrNil
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-user interaction'!
+
+askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
+!
+
+askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName forNewContainer:forNewContainer
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName forNewContainer:forNewContainer
+!
+
+askForExistingRevision:boxText title:title class:aClass
+    "open a dialog asking for a containers revision;
+     return a revision number, or nil if canceled."
+
+    |mgr sourceInfo module package fileName|
+
+    mgr := self sourceCodeManagerFor:aClass.
+    sourceInfo := mgr sourceInfoOfClass:aClass.
+    sourceInfo isNil ifTrue:[^ nil].
+
+    package := mgr directoryFromSourceInfo:sourceInfo.
+    module := mgr moduleFromSourceInfo:sourceInfo.  
+    fileName := mgr containerFromSourceInfo:sourceInfo.
+    ^ self
+        askForExistingRevision:boxText 
+        title:title 
+        class:aClass 
+        manager:mgr 
+        module:module package:package 
+        fileName:fileName
+
+    "
+     SourceCodeManagerUtilities
+        askForRevisionToCompare:'enter revision'
+        title:'revision'
+        class:Array
+    "
+
+    "Modified: / 12-09-2006 / 14:17:04 / cg"
+!
+
+askForExistingRevision:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:directory fileName:fileName
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default askForExistingRevision:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:directory fileName:fileName
+!
+
+checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:checkAgainHolder
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:checkAgainHolder
+!
+
+getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil
+    "ask for a log message for checking in a class (plus checkinQuick state info),
+     and other info (mark as stable, for example).
+     Return the info-object (actually: the dialog) or nil if aborted."
+
+    ^ self
+        getCheckinInfoFor:aClassNameOrPackageNameString 
+        initialAnswer:initialAnswerOrNil
+        withQuickOption:false
+
+    "
+     SourceCodeManagerUtilities getCheckinInfoFor:'hello' initialAnswer:'bla'
+    "
+
+    "Modified: / 06-07-2010 / 11:22:15 / cg"
+!
+
+getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil withQuickOption:withQuickOption
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil withQuickOption:withQuickOption
+!
+
+goodInitialLogMessageForCheckinClassOfClass:aClass
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default goodInitialLogMessageForCheckinClassOfClass:aClass
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-encoding'!
+
+guessEncodingOfFile:aFilename
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default guessEncodingOfFile:aFilename
+!
+
+guessEncodingOfStream:aStream
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default guessEncodingOfStream:aStream
+! !
+
+!SourceCodeManagerUtilities methodsFor:'accessing'!
+
+classResources
+
+    ^self class classResources
+
+    "Created: / 10-10-2011 / 11:42:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SourceCodeManagerUtilities methodsFor:'error handling'!
+
+doesNotUnderstand: aMessage
+
+    (self class respondsTo: aMessage selector) ifTrue:[
+        "Bad, method is not moved the the instance side"
+        self breakPoint: #jv.
+        self breakPoint: #cg.
+
+        ^aMessage sendTo: self class
+    ] ifFalse:[
+        ^super doesNotUnderstand: aMessage
+    ]
+
+    "Created: / 10-10-2011 / 14:02:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SourceCodeManagerUtilities methodsFor:'initialization'!
+
+setManager: aSourceCodeManager
+
+    manager := aSourceCodeManager
+
+    "Created: / 10-10-2011 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SourceCodeManagerUtilities methodsFor:'utilities'!
+
+nameOfExtensionsContainer
     ^ 'extensions.st'
 !
 
@@ -160,6 +902,8 @@
 sourceCodeManagerFor:aClass
     |mgr assumption|
 
+    manager notNil ifTrue:[^manager].
+
     mgr := aClass theNonMetaclass sourceCodeManager.
     mgr isNil ifTrue:[
         SourceCodeManager isNil ifTrue:[
@@ -178,6 +922,7 @@
     ^ mgr
 
     "Modified: / 19-04-2011 / 11:48:41 / cg"
+    "Modified: / 10-10-2011 / 11:47:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceCodeOfClass:aClass
@@ -237,7 +982,7 @@
     "Modified: / 17-02-2011 / 10:20:14 / cg"
 ! !
 
-!SourceCodeManagerUtilities class methodsFor:'utilities-cvs'!
+!SourceCodeManagerUtilities methodsFor:'utilities-cvs'!
 
 changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision using:aSourceCodeManager
     "check-out an extension container from the source repository, and return the methods there as a change set.
@@ -574,99 +1319,6 @@
         withCheck:(UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true)
 !
 
-checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrStringNil withCheck:doCheckClasses
-    "check a bunch of classes into the source repository.
-     If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message."
-
-    |classes allClasses checkinInfoOrString resources yesOrNoToAll unchangedClasses|
-
-    "/ ignore private classes
-    classes := aCollectionOfClasses select:[:aClass | aClass owningClass isNil].
-    classes isEmpty ifTrue:[
-        self information:'Only private classes given - nothing checked in.'.
-        ^ self
-    ].
-    classes := classes select:[:aClass | aClass isLoaded].
-    classes isEmpty ifTrue:[
-        self information:'Only unloaded classes given - nothing checked in.'.
-        ^ self
-    ].
-
-    classes size == 1 ifTrue:[
-        ^ self checkinClass:classes first withInfo:aLogInfoOrStringNil withCheck:doCheckClasses.
-    ].
-
-    resources := self classResources.
-
-    "ask once, for all classes"
-    aLogInfoOrStringNil isNil ifTrue:[
-        checkinInfoOrString := self 
-                        getCheckinInfoFor:(resources string:'%1 classes to checkin' with:aCollectionOfClasses size)
-                        initialAnswer:nil
-                        withQuickOption:true.
-        checkinInfoOrString isNil ifTrue:[^ self].
-    ] ifFalse:[
-        checkinInfoOrString := aLogInfoOrStringNil.
-    ].
-
-    allClasses := classes.    
-    checkinInfoOrString quickCheckIn ifTrue:[
-        classes := classes select:[:aClass | aClass hasUnsavedChanges].
-        classes isEmpty ifTrue:[ Dialog information:'no changes to checkin (quickCheckIn)' ]
-    ].
-
-    "abortAll is handled, and also asked for here!!"
-    AbortAllOperationRequest handleAndAnswerQueryIn:[
-        classes notEmpty ifTrue:[
-            self yesToAllNotification handle:[:ex |
-                yesOrNoToAll := ex parameter.
-                ex proceed
-            ] do:[
-                self yesToAllQuery handle:[:ex |
-                    ex proceedWith:yesOrNoToAll
-                ] do:[
-                    classes do:[:aClass |
-                        self activityNotification:(resources string:'checking in %1' with:aClass name).
-                        "/ ca does not want boxes to pop up all over ...
-                        UserInformation handle:[:ex |
-                            Transcript showCR:ex description.
-                            ex proceed.
-                        ] do:[
-                            AbortOperationRequest catch:[
-                                self 
-                                    checkinClass:aClass 
-                                    withInfo:checkinInfoOrString 
-                                    withCheck:doCheckClasses
-                            ]
-                        ].
-                    ].
-                ]
-            ].
-        ].
-
-        (checkinInfoOrString isStable or:[checkinInfoOrString tagIt])
-        ifTrue:[
-            "/mhmh - but tag should be set on all (even unchanged ones)
-            "/ the other onces have already been tagged
-            unchangedClasses := allClasses select:[:eachClass | (classes includes:eachClass) not].
-
-            "mhmh - could still have to tag them"
-            checkinInfoOrString isStable ifTrue:[
-                unchangedClasses do:[:eachClass |
-                    self tagClass:eachClass as:#stable.
-                ].
-            ].
-            checkinInfoOrString tagIt ifTrue:[
-                unchangedClasses do:[:eachClass |
-                    self tagClass:eachClass as:(checkinInfoOrString tag).
-                ].
-            ].
-        ].
-    ].
-
-    "Modified: / 20-08-2011 / 14:00:13 / cg"
-!
-
 checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
     "checkin a projects extensions into the source repository.
      If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message."
@@ -2539,7 +3191,7 @@
     "Modified: / 12-09-2006 / 12:04:44 / cg"
 ! !
 
-!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-helpers'!
+!SourceCodeManagerUtilities methodsFor:'utilities-cvs-helpers'!
 
 getMethodVersionsOfClass:aClass selector:selector numberOfRevisions:numberOfRevisionsOrNil
     "check-out all previous versions of aClass and retrieve the history of selector.
@@ -2615,7 +3267,7 @@
     "
 ! !
 
-!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-user interaction'!
+!SourceCodeManagerUtilities methodsFor:'utilities-cvs-user interaction'!
 
 askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
     "open a dialog asking for a source container;
@@ -2810,37 +3462,6 @@
     "Modified: / 23-08-2006 / 14:13:04 / cg"
 !
 
-askForExistingRevision:boxText title:title class:aClass
-    "open a dialog asking for a containers revision;
-     return a revision number, or nil if canceled."
-
-    |mgr sourceInfo module package fileName|
-
-    mgr := self sourceCodeManagerFor:aClass.
-    sourceInfo := mgr sourceInfoOfClass:aClass.
-    sourceInfo isNil ifTrue:[^ nil].
-
-    package := mgr directoryFromSourceInfo:sourceInfo.
-    module := mgr moduleFromSourceInfo:sourceInfo.  
-    fileName := mgr containerFromSourceInfo:sourceInfo.
-    ^ self
-        askForExistingRevision:boxText 
-        title:title 
-        class:aClass 
-        manager:mgr 
-        module:module package:package 
-        fileName:fileName
-
-    "
-     SourceCodeManagerUtilities
-        askForRevisionToCompare:'enter revision'
-        title:'revision'
-        class:Array
-    "
-
-    "Modified: / 12-09-2006 / 14:17:04 / cg"
-!
-
 askForExistingRevision:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:directory fileName:fileName
     "open a dialog asking for a containers revision;
      return a revision number, or nil if canceled."
@@ -3311,7 +3932,7 @@
     "Modified: / 27-01-2011 / 09:25:30 / cg"
 ! !
 
-!SourceCodeManagerUtilities class methodsFor:'utilities-encoding'!
+!SourceCodeManagerUtilities methodsFor:'utilities-encoding'!
 
 guessEncodingOfFile:aFilename
     "look for a string
@@ -3349,9 +3970,9 @@
 !SourceCodeManagerUtilities class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.223 2011-09-29 19:41:47 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.224 2011-10-10 13:31:33 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.223 2011-09-29 19:41:47 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.224 2011-10-10 13:31:33 vrany Exp $'
 ! !