VDBVariableObjectPresenter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 06 Feb 2018 14:35:33 +0000
changeset 62 8a52495c2108
parent 61 a8b0e1d29ef7
child 64 5ca770f02332
permissions -rw-r--r--
UI: avoid flickering when updating variable object list

"
jv:vdb - Visual / VM Debugger
Copyright (C) 2015-now Jan Vrany

This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'

You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
"
"{ Package: 'jv:vdb' }"

"{ NameSpace: Smalltalk }"

VDBAbstractPresenter subclass:#VDBVariableObjectPresenter
	instanceVariableNames:'varobj'
	classVariableNames:''
	poolDictionaries:''
	category:'VDB-Presentation'
!

!VDBVariableObjectPresenter class methodsFor:'documentation'!

copyright
"
jv:vdb - Visual / VM Debugger
Copyright (C) 2015-now Jan Vrany

This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'

You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
"
! !

!VDBVariableObjectPresenter class methodsFor:'menu specs'!

contextMenu
    "This resource specification was automatically generated
     by the MenuEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the MenuEditor may not be able to read the specification."


    "
     MenuEditor new openOnClass:VDBVariableObjectPresenter andSelector:#contextMenu
     (Menu new fromLiteralArrayEncoding:(VDBVariableObjectPresenter contextMenu)) startUp
    "

    <resource: #menu>

    ^ 
     #(Menu
        (
         (MenuItem
            label: 'Copy Value'
            itemValue: doCopyValue
            isVisible: true
          )
         (MenuItem
            label: 'Copy Expression'
            itemValue: doCopyPath
            isVisible: true
          )
         )
        nil
        nil
      )
! !

!VDBVariableObjectPresenter methodsFor:'accessing'!

label
    ^ self parent == self rootItem 
        ifTrue:[ varobj path ] 
        ifFalse:[ varobj expression ]

    "Created: / 27-02-2015 / 15:57:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 05-02-2018 / 21:26:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

subject
    "Return an instance of GDB object that this presenter displays."

    ^ varobj

    "Modified: / 05-02-2018 / 13:08:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

value
    ^ varobj value

    "Created: / 02-06-2017 / 07:32:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 28-01-2018 / 22:49:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

valueString
    ^ varobj valueString

    "Created: / 11-06-2017 / 23:25:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

varobj
    ^ varobj

    "Created: / 28-01-2018 / 22:45:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VDBVariableObjectPresenter methodsFor:'initialization'!

setVarobj:aGDBVariable 
    varobj := aGDBVariable

    "Created: / 27-02-2015 / 16:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VDBVariableObjectPresenter methodsFor:'menu actions'!

doCopyPath
    self doCopy: varobj path.

    "Created: / 05-02-2018 / 22:32:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

doCopyValue
    self doCopy: varobj value.

    "Created: / 16-01-2018 / 23:28:56 / jv"
    "Modified: / 28-01-2018 / 22:55:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VDBVariableObjectPresenter methodsFor:'private'!

fetchChildren
    ^ varobj children collect:[ :each | self class new setVarobj:each; parent:self;yourself ]

    "Created: / 28-01-2018 / 22:46:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VDBVariableObjectPresenter methodsFor:'protocol-queries'!

hasChildren
    ^ varobj hasChildren

    "Created: / 28-01-2018 / 22:49:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VDBVariableObjectPresenter methodsFor:'testing'!

isVariablePresenter
    ^ true

    "Created: / 02-06-2017 / 00:05:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!VDBVariableObjectPresenter class methodsFor:'documentation'!

version_HG

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