SmallSenseEditService.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 02 Aug 2013 16:40:58 +0100
changeset 47 547d48a49dbd
parent 42 48307f46ff8e
permissions -rw-r--r--
Added simple tab completion.

"{ Package: 'jv:smallsense' }"

Tools::CodeViewService subclass:#SmallSenseEditService
	instanceVariableNames:'support'
	classVariableNames:''
	poolDictionaries:''
	category:'SmallSense-Services'
!

!SmallSenseEditService 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>"
! !

!SmallSenseEditService 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 == SmallSenseEditService

    "Created: / 27-07-2013 / 22:35:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!SmallSenseEditService methodsFor:'accessing-views'!

codeView
    ^ codeView
!

gutterView
    ^ gutterView
!

textView
    ^ textView
! !

!SmallSenseEditService 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 := SmallSenseEditSupport 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>"
! !

!SmallSenseEditService 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>"
! !

!SmallSenseEditService methodsFor:'registering'!

registerIn: aCodeView

    super registerIn: aCodeView.
    aCodeView languageHolder addDependent: self.
    aCodeView classHolder    addDependent: self.
    aCodeView methodHolder   addDependent: self.
    support := SmallSenseEditSupport 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>"
! !