SmallSense__ClassPO.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 18 Sep 2013 00:58:49 +0100
changeset 89 8ff5fb2b27bf
parent 67 020b7461b15e
child 90 4035038db277
permissions -rw-r--r--
Improvement in (Smalltalk)EditSupport. After some electric text is inserted, BackSpace will delete the inserted text instead of just last character.

"{ Package: 'jv:smallsense' }"

"{ NameSpace: SmallSense }"

PO subclass:#ClassPO
	instanceVariableNames:'showPrefix'
	classVariableNames:''
	poolDictionaries:''
	category:'SmallSense-Core-Interface-PO'
!


!ClassPO methodsFor:'accessing'!

icon

    icon ifNil:[icon := SystemBrowser iconForClass: subject].
    ^icon

    "Created: / 06-04-2011 / 23:36:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

klass
    ^ subject

    "Created: / 25-08-2013 / 13:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

klass: klass
    ^ subject := klass

    "Created: / 25-08-2013 / 13:07:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

name

    | nm |

    showPrefix ifTrue:[
        nm := subject name.
    ] ifFalse:[
        nm := subject nameWithoutPrefix.
    ].
    ^nm

    "Created: / 26-08-2013 / 10:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

showPrefix
    ^ showPrefix
!

showPrefix:something
    showPrefix := something.
!

subject: aClass

    super subject: aClass.
    name := aClass name.

    "Created: / 06-04-2011 / 21:02:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ClassPO methodsFor:'converting'!

asString
    ^subject isJavaClass ifTrue:[
        subject javaName
    ] ifFalse:[
        subject name
    ].

    "Created: / 04-04-2012 / 13:00:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 26-08-2013 / 10:27:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ClassPO methodsFor:'displaying'!

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

    | nm namespace lw cnw fg |

    showPrefix ifTrue:[
        nm := subject name.
        namespace := nil
    ] ifFalse:[
        nm := subject nameWithoutPrefix.
        subject isJavaClass ifFalse:[
            namespace := subject  nameSpace name.
        ] ifTrue:[
            namespace := subject javaPackage.
        ]
    ].

    nm displayOn:aGC x:x y:y opaque:opaque.

    (namespace notNil and:[namespace ~~ #Smalltalk]) ifTrue:[
        namespace := 'in ', namespace.
        lw :=  x + 16 + (name widthOn: aGC).
        cnw := aGC widthOfString: namespace.

        (aGC width > (lw + cnw + 5)) ifTrue:[
            fg := aGC paint.
            aGC paint: (Color gray: 40).
            namespace displayOn:aGC x: aGC width - cnw - 5 y:y opaque:opaque.
            aGC paint: fg.
        ]
    ]

    "Created: / 04-04-2012 / 13:03:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 25-08-2013 / 13:10:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

displayString
    ^ self name

    "Created: / 20-04-2012 / 18:19:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 26-08-2013 / 10:27:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ClassPO methodsFor:'testing'!

isSmallSenseClassPO
    ^ true
! !

!ClassPO class methodsFor:'documentation'!

version_HG

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

version_SVN
    ^ '$Id: SmallSenseClass.st 7825 2011-11-26 18:32:31Z vranyj1 $'
! !