SmallSense__ClassPO.st
author Claus Gittinger
Wed, 26 Feb 2014 19:28:14 +0100
changeset 176 df6d3225d1e4
parent 174 3e08d765d86f
parent 152 ca90a7b9243f
child 210 1922d415c704
child 229 c82a22d2153d
child 329 0c0024acfccc
permissions -rw-r--r--
merge with 174

"{ 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.
        (context notNil and:[subject isJavaClass]) ifTrue:[
            context language isJava ifTrue:[
                nm := subject javaName
            ] ifFalse:[
                context language isSmalltalk ifTrue:[
                   nm := 'JAVA ' , (subject  binaryName copyReplaceAll: $/ with: Character space)
                 ]
            ]
        ].
    ] ifFalse:[
        nm := subject nameWithoutPrefix.
    ].
    ^nm

    "Created: / 26-08-2013 / 10:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 17-12-2013 / 22:16:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

showPrefix
    ^ showPrefix
!

showPrefix:something
    showPrefix := something.
!

stringAlreadyWritten
    "Answers a string already written in the textview"    

    (subject isJavaClass and:[context language isSmalltalk]) ifTrue:[
        | rec |

        rec := context node .
        [ rec isUnaryMessage ] whileTrue:[
            rec := rec receiver.
        ].
        (rec isVariableNode and:['JAVA' startsWith: rec name]) ifTrue:[
            ^ context codeView contents asString copyFrom: rec startPosition to: context node endPosition
        ].
    ].
    ^ super stringAlreadyWritten

    "Created: / 20-10-2013 / 02:46:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

stringToCompleteForLanguage: language
    ^ (subject isJavaClass and:[language isSmalltalk]) ifTrue:[
        'JAVA ', (subject binaryName copyReplaceAll: $/ with: Character space)
    ] ifFalse:[
        super stringToCompleteForLanguage: language
    ].

    "Created: / 03-10-2013 / 16:42:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 20-10-2013 / 02:35:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

subject: aClass

    super subject: aClass.

    "Created: / 06-04-2011 / 21:02:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 03-10-2013 / 16:30:10 / 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'!

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

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

    showPrefix ifFalse:[
        namespace := subject isJavaClass 
                        ifFalse:[subject  nameSpace name]
                        ifTrue:[subject javaPackage].
        (namespace notNil and:[namespace ~~ #Smalltalk]) ifTrue:[
            namespace := 'in ', namespace.
            lw :=  x + IconWidth + (aLabel widthOn: aGC).
            y0 := y - (lH + 1 - h // 2).
            y0 := y0 + (namespace ascentOn: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:y0.
                aGC paint: fg.
            ]
        ]
    ]

    "Created: / 18-09-2013 / 00:17:20 / 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:'initialization'!

initialize
    "Invoked when a new instance is created."

    "/ please change as required (and remove this comment)
    "/ showPrefix := nil.

    super initialize.  
    showPrefix := false.

    "Modified: / 20-10-2013 / 02:38:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ClassPO methodsFor:'testing'!

isSmallSenseClassPO
    ^ true
! !

!ClassPO class methodsFor:'documentation'!

version_HG

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

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