diff -r fe86b749d233 -r 2257d7223898 SmallSense__EditService.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SmallSense__EditService.st Sat Aug 24 22:15:09 2013 +0100 @@ -0,0 +1,121 @@ +"{ Package: 'jv:smallsense' }" + +"{ NameSpace: SmallSense }" + +Tools::CodeViewService subclass:#EditService + instanceVariableNames:'support' + classVariableNames:'' + poolDictionaries:'' + category:'SmallSense-Services' +! + +!EditService class methodsFor:'accessing'! + +label + "Answers a short label - for UI" + + ^'SmallSense - Edit Support' + + "Created: / 27-07-2013 / 22:35:38 / Jan Vrany " +! ! + +!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 " +! ! + +!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 " +! ! + +!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 " + "Modified: / 24-07-2013 / 23:28:45 / Jan Vrany " +! ! + +!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 " +! + +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 " +! ! +