SmallSense__VariablePO.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 31 Mar 2014 23:43:25 +0200
changeset 185 75738108cc3f
parent 180 06687914b0e8
child 230 2c12395f8108
child 329 0c0024acfccc
permissions -rw-r--r--
Support for Tab in code completion. Pressing Tab when code completion window is open completes longes common prefix of items matching already typed text. If no text can be completed, flashes the completion popup.

"{ Package: 'jv:smallsense' }"

"{ NameSpace: SmallSense }"

PO subclass:#VariablePO
	instanceVariableNames:'class type'
	classVariableNames:''
	poolDictionaries:''
	category:'SmallSense-Core-Interface-PO'
!


!VariablePO class methodsFor:'instance creation'!

argument: name

    ^self new name: name; type: #MethodArg

    "Created: / 26-11-2011 / 18:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

classVariable: name in: class

    ^self new name: name; type: #ClassVar; class: class

    "Created: / 26-11-2011 / 18:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

globalVariable: name

    ^self new name: name; type: #Global

    "Created: / 26-11-2011 / 18:57:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

instanceVariable: name in: class

    ^self new name: name; type: #InstanceVar; class: class

    "Created: / 26-11-2011 / 18:45:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

variable: name

    ^self new name: name; type: #MethodVar

    "Created: / 26-11-2011 / 18:45:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VariablePO methodsFor:'accessing'!

class:something
    class := something.

    "Created: / 06-04-2011 / 16:51:42 / Jakub <zelenja7@fel.cvut.cz>"
!

stringToCompleteForLanguage: language

    "Answers a string to complete"

    ^name "/, ' '

    "Created: / 31-03-2014 / 23:09:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

type:something
    type := something.
! !

!VariablePO methodsFor:'displaying'!

displayLabel:aLabel h:lH on:aGC x:x y:y h:h
    | lw cn cnw fg y0 |

    super displayLabel:aLabel h:lH on:aGC x:x y:y h:h.

    class isNil ifTrue:[ ^ self ]. "/ Could be pseudo-variable

    lw :=  x + IconWidth + (self label widthOn: aGC).
    cn := class nameWithoutPrefix.
    cnw := aGC widthOfString: cn.
    y0 := y - (lH + 1 - h // 2).
    y0 := y0 + (cn ascentOn:aGC).  

    (aGC width > (lw + cnw + 5)) ifTrue:
        [fg := aGC paint.
        aGC paint: Color gray .
        aGC displayString: cn x: aGC width - cnw - 5 y: y0.
        aGC paint: fg.
    ]

    "Created: / 18-09-2013 / 00:19:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

displayOn:aGC x:x y:y opaque:opaque

    | lw cn cnw fg |

    super displayOn:aGC x:x y:y opaque:opaque.

    class isNil ifTrue:[^self].

    lw :=  x + 16 + (self label widthOn: aGC).
    cn := class nameWithoutPrefix.
    cnw := aGC widthOfString: cn.

    (aGC width > (lw + cnw + 5)) ifTrue:
        [fg := aGC paint.
        aGC paint: Color gray .
        aGC displayString: cn x: aGC width - cnw - 5 y: y.
        aGC paint: fg.
    ]

    "Created: / 21-05-2011 / 11:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified (format): / 17-09-2013 / 23:39:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VariablePO methodsFor:'testing'!

isSmallSenseVariablePO
    ^ true
! !

!VariablePO class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
!

version_SVN
    ^ '$Id: SmallSense__VariablePO.st,v 1.2 2014/02/12 14:49:29 sr Exp $'
! !