Package structure reorganization.
SmallSense is no longer Smalltalk-specific but it provides infrastructure
to build support for other languages as well. Therefore classes and class
categories were renamed to reflect whether it is a reusable *core* thing
or Smalltalk-specific code.
"{ Package: 'jv:smallsense' }"
"{ NameSpace: SmallSense }"
Tools::CodeViewService subclass:#EditService
instanceVariableNames:'support'
classVariableNames:''
poolDictionaries:''
category:'SmallSense-Core-Services'
!
!EditService class methodsFor:'accessing'!
label
"Answers a short label - for UI"
^'SmallSense - Edit Support'
"Created: / 27-07-2013 / 22:35:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!EditService class methodsFor:'queries'!
isUsefulFor:aCodeView
"this filters useful services.
must be redefined to return true in subclasses (but each class must do it only
for itself - not for subclasses"
^ self == EditService
"Created: / 27-07-2013 / 22:35:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!EditService methodsFor:'accessing-views'!
codeView
^ codeView
!
gutterView
^ gutterView
!
textView
^ textView
! !
!EditService methodsFor:'change & update'!
update:something with:aParameter from:changedObject
"Invoked when an object that I depend upon sends a change notification."
| lang |
changedObject == codeView ifTrue:[
(#(methodHolder classHolder languageHolder) includes: something) ifTrue:[
aParameter key removeDependent: self.
aParameter value addDependent: self.
]
].
(changedObject == codeView languageHolder
or:[something == codeView classHolder
or:[something == codeView methodHolder]]) ifTrue:[
UserPreferences current smallSenseElectricEditSupportEnabled ifTrue:[
support language ~~ (lang := codeView language) ifTrue:[
support := EditSupport forLanguage: lang.
support service: self.
].
].
^self.
].
super update:something with:aParameter from:changedObject
"Modified: / 27-07-2013 / 22:32:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!EditService methodsFor:'event handling'!
keyPress: key x:x y:y in: view
"Handles an event in given view (a subview of codeView).
If the method returns true, the event will not be processed
by the view."
^support notNil
ifTrue:[support keyPress: key x:x y:y in: view]
ifFalse:[false]
"Created: / 07-03-2010 / 09:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 24-07-2013 / 23:28:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!EditService methodsFor:'registering'!
registerIn: aCodeView
super registerIn: aCodeView.
aCodeView languageHolder addDependent: self.
aCodeView classHolder addDependent: self.
aCodeView methodHolder addDependent: self.
support := EditSupport forLanguage: aCodeView language.
support service: self.
"Created: / 24-07-2013 / 23:13:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
unregister
"Uninstall myself from my codeView"
super unregister.
codeView languageHolder removeDependent: self.
codeView classHolder removeDependent: self.
codeView methodHolder removeDependent: self.
"Created: / 24-07-2013 / 23:14:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !