SmallSense__VariablePO.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 18 Sep 2013 00:59:55 +0100
changeset 90 4035038db277
parent 67 020b7461b15e
child 174 3e08d765d86f
permissions -rw-r--r--
Fixes in PO rendering. Make class/method/variable POs render its class/namespace if there's enough space in the list.

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

stringToComplete

    "Answers a string to complete"

    ^name , ' '

    "Created: / 20-05-2011 / 13:54:29 / 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: SmallSenseVariable.st 7825 2011-11-26 18:32:31Z vranyj1 $'
! !