"{ Package: 'jn:refactoring_custom' }"!
!RBAbstractClass methodsFor:'accessing'!
allClassVarNames
| variableNames |
variableNames := self allClassVariableNames.
variableNames isNil ifTrue: [
^ #()
].
^ variableNames
"Created: / 01-06-2014 / 23:40:50 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 20-09-2014 / 19:26:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'enumerating'!
allSuperclassesDo: aBlock
| superclass |
superclass := self superclass.
superclass isNil ifFalse: [
superclass withAllSuperclassesDo: aBlock
].
"Created: / 21-04-2014 / 19:15:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 04-10-2014 / 22:35:33 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
instVarNames
"Returns instance variable names - STX compatibility"
^ self instanceVariableNames
"Created: / 29-05-2014 / 23:46:45 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 24-09-2014 / 20:36:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified (comment): / 30-09-2014 / 19:30:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
instVarNames: aCollectionOfStrings
"Set instance variable names - STX compatibility"
self instanceVariableNames: aCollectionOfStrings
"Created: / 30-09-2014 / 19:30:58 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
methodDictionary
"Stub method, returns real class MethodDictionary, although full MethodDictionary
implementation would be better here."
| methodDictionary |
methodDictionary := MethodDictionary new.
self realClass isNil ifFalse: [
self realClass methodDictionary do: [ :method |
methodDictionary := methodDictionary
at: method selector asSymbol
putOrAppend: (RBMethod
for: self
fromMethod: method
andSelector: method selector asSymbol)
].
].
removedMethods isNil ifFalse: [
removedMethods do: [ :removedMethod |
| method |
method := methodDictionary at: removedMethod selector asSymbol ifAbsent: [ nil ].
method isNil ifFalse: [
methodDictionary := methodDictionary removeKeyAndCompress: removedMethod selector asSymbol.
]
]
].
newMethods isNil ifFalse: [
newMethods do: [ :newMethod |
methodDictionary := methodDictionary at: newMethod selector asSymbol putOrAppend: newMethod.
]
].
^ methodDictionary
"Created: / 28-09-2014 / 22:57:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 02-10-2014 / 21:11:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
nameWithoutPrefix
"see ClassDescription >> nameWithoutPrefix"
^ (Smalltalk at: #Class) nameWithoutPrefix: name
"Created: / 03-08-2014 / 23:29:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 20-09-2014 / 19:21:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
superclassName: aName
"Assign superclass by its name"
self superclass: (self model classNamed: aName asSymbol)
"Created: / 28-09-2014 / 22:53:46 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
theMetaclass
"alias for theMetaClass - STX compatibility"
^ self theMetaClass.
"Created: / 26-09-2014 / 16:26:07 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'accessing'!
theNonMetaclass
"alias for theNonMetaClass - STX compatibility"
^ self theNonMetaClass
"Created: / 26-09-2014 / 16:36:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBAbstractClass methodsFor:'enumerating'!
withAllSuperclassesDo:aBlock
"evaluate aBlock for the class and all of its superclasses"
aBlock value:self.
self allSuperclassesDo:aBlock
"Created: / 29-09-2014 / 22:48:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBClass methodsFor:'accessing'!
compile
"Updates class definition in the namespace along with code changes"
model defineClass: self definitionString.
"Created: / 25-09-2014 / 22:31:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 25-09-2014 / 23:36:04 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBClass methodsFor:'accessing'!
theNonMetaClass
"alias for theNonMetaclass - squeak compatibility"
^ self theNonMetaclass
"Created: / 26-09-2014 / 16:50:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBMetaclass methodsFor:'accessing'!
theMetaClass
"alias for metaclass - sqeak compatibility"
^ self metaclass.
"Created: / 26-09-2014 / 21:32:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBMetaclass methodsFor:'accessing'!
theMetaclass
"alias for metaclass - STX compatibility"
^ self metaclass.
"Created: / 26-09-2014 / 21:28:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBMethod methodsFor:'queries'!
sends:selectorSymbol1 or:selectorSymbol2
"Returns true, if this method contains a message-send
to either selectorSymbol1 or selectorSymbol2.
( non-optimized version of Message>>sends:or: )"
^ (self sendsSelector: selectorSymbol1) or: [ self sendsSelector: selectorSymbol2 ]
"Created: / 04-10-2014 / 00:01:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
classMenuExtensionCustomGenerators:aMenu
<menuextension: #classMenu>
| item index perspective context |
item := MenuItem label:(resources string:'Generate - Custom').
perspective := CustomPerspective classPerspective.
context := CustomBrowserContext
perspective:perspective
state:self navigationState.
item submenuChannel:[ CustomMenuBuilder buildMenuForContext:context ].
index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Generate' ].
index ~~ 0 ifTrue:[
aMenu addItem:item beforeIndex:index + 1.
] ifFalse:[
aMenu addItem:item.
].
"Created: / 26-08-2014 / 10:21:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
codeViewMenuExtensionCustomRefactorings:aMenu
<menuextension: #codeViewMenu>
| item index perspective context |
item := MenuItem label:(resources string:'Refactor - Custom').
perspective := CustomPerspective methodPerspective.
context := CustomBrowserContext
perspective:perspective
state:self navigationState.
item submenuChannel:[ CustomMenuBuilder buildMenuForContext:context filter: [:each | each isCustomRefactoring ] ].
index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Refactor' ].
index ~~ 0 ifTrue:[
aMenu addItem:item beforeIndex:index + 1.
] ifFalse:[
aMenu addItem:item.
].
"Created: / 26-08-2014 / 22:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
selectorMenuExtensionCustomGenerators:aMenu
<menuextension: #selectorMenuCompareGenerateDebugSlice>
| item index perspective context |
item := MenuItem label:(resources string:'Generate - Custom').
perspective := CustomPerspective methodPerspective.
context := CustomBrowserContext
perspective:perspective
state:self navigationState.
item submenuChannel:[ CustomMenuBuilder buildMenuForContext:context filter: [:each | each isCustomCodeGenerator ] ].
index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Generate' ].
index ~~ 0 ifTrue:[
aMenu addItem:item beforeIndex:index + 1.
] ifFalse:[
aMenu addItem:item.
].
"Created: / 26-08-2014 / 10:18:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 05-09-2014 / 11:28:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
selectorMenuExtensionCustomRefactorings:aMenu
<menuextension: #selectorMenuCompareGenerateDebugSlice>
| item index perspective context |
item := MenuItem label:(resources string:'Refactor - Custom').
perspective := CustomPerspective methodPerspective.
context := CustomBrowserContext
perspective:perspective
state:self navigationState.
item submenuChannel:[ CustomMenuBuilder buildMenuForContext:context filter: [:each | each isCustomRefactoring ] ].
index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Refactor' ].
index ~~ 0 ifTrue:[
aMenu addItem:item beforeIndex:index + 1.
] ifFalse:[
aMenu addItem:item.
].
"Created: / 24-08-2014 / 15:23:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
"Modified: / 05-09-2014 / 11:28:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
variablesMenuExtensionCustomGenerators:aMenu
<menuextension: #variablesMenu>
| item index perspective context |
item := MenuItem label:(resources string:'Generate - Custom').
perspective := CustomPerspective instanceVariablePerspective.
context := CustomBrowserContext
perspective:perspective
state:self navigationState.
item submenuChannel:[ CustomMenuBuilder buildMenuForContext:context ].
index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Generate' ].
index ~~ 0 ifTrue:[
aMenu addItem:item beforeIndex:index + 1.
] ifFalse:[
aMenu addItem:item.
].
"Created: / 26-08-2014 / 10:21:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!jn_refactoring_custom class methodsFor:'documentation'!
extensionsVersion_HG
^ '$Changeset: <not expanded> $'
! !