VDBThreadGroupPresenter.st
author Jan Vrany <jan.vrany@labware.com>
Tue, 18 May 2021 11:21:13 +0100
changeset 219 6ab12a17ca3b
parent 212 62bb14c71a71
child 264 23960fcb9dac
permissions -rw-r--r--
UX: selectively update stack tree to minimize changes Previously, a whole stack tree has been recreated upon stop event. For multithreaded programs with deep stacks this caused annoying flickering (especially when target is some slow dev board) as well as weird selection losses. This commit selectively updates stack tree upon stop event to minimize (or completely avoid) changes to the three. This reduces flickering.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     1
"
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     2
jv:vdb - Visual / VM Debugger
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
212
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
     4
Copyright (C) 2021 LabWare
49
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     5
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     6
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     7
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     8
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
     9
"
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
"{ Package: 'jv:vdb' }"
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
38
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    12
"{ NameSpace: Smalltalk }"
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    13
60
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    14
VDBAbstractPresenter subclass:#VDBThreadGroupPresenter
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	instanceVariableNames:'threadGroup'
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	classVariableNames:''
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	poolDictionaries:''
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	category:'VDB-Presentation'
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
49
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    21
!VDBThreadGroupPresenter class methodsFor:'documentation'!
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    22
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    23
copyright
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    24
"
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    25
jv:vdb - Visual / VM Debugger
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    26
Copyright (C) 2015-now Jan Vrany
212
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
    27
Copyright (C) 2021 LabWare
49
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    28
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    29
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    30
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    31
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    32
"
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
    33
! !
38
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    34
23
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    35
!VDBThreadGroupPresenter methodsFor:'accessing'!
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
24
c33a063cb363 Added icons from Eclipse.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    37
icon
31
00f6de198c7f Minor fixes in the UI - redraw stack list when execution state changes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    38
    threadGroup isRunning ifTrue:[ ^ VDBIconLibrary threadGroupRunning16x16 ].
00f6de198c7f Minor fixes in the UI - redraw stack list when execution state changes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    39
    threadGroup isStopped ifTrue:[ ^ VDBIconLibrary threadGroupStopped16x16 ].
34
cda31dfd5386 Minor tweaks in stack view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
    40
    threadGroup isDead    ifTrue:[ ^ VDBIconLibrary threadGroupTerminated16x16 ].
31
00f6de198c7f Minor fixes in the UI - redraw stack list when execution state changes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    41
    ^ nil
24
c33a063cb363 Added icons from Eclipse.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    42
c33a063cb363 Added icons from Eclipse.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    43
    "Created: / 22-09-2014 / 22:13:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
34
cda31dfd5386 Minor tweaks in stack view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
    44
    "Modified: / 30-09-2014 / 00:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24
c33a063cb363 Added icons from Eclipse.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    45
!
c33a063cb363 Added icons from Eclipse.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    46
23
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    47
label
44
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    48
    | executableOrThreadGrouppId pidOrEmpty state |
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    49
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    50
    threadGroup executable notNil ifTrue:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    51
        executableOrThreadGrouppId := threadGroup executable contractTo: 30 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    52
    ] ifFalse:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    53
        executableOrThreadGrouppId := 'thread group ', threadGroup id.
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    54
    ].
38
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    55
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    56
    (threadGroup type = 'process' and:[ threadGroup pid notNil ]) ifTrue:[
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    57
        pidOrEmpty := 'pid ', threadGroup pid printString , ', '.
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    58
    ].
44
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    59
    threadGroup isStopped ifTrue:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    60
        state := 'stopped'
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    61
    ] ifFalse:[ 
38
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    62
    threadGroup isRunning ifTrue:[ 
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    63
        state := 'running'
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    64
    ] ifFalse:[ 
44
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    65
    threadGroup isFinished ifTrue:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    66
        state := 'finished'
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    67
    ] ifFalse:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    68
    threadGroup isTerminated ifTrue:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    69
        state := 'terminated'
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    70
    ] ifFalse:[ 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    71
        state := 'not run'
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    72
    ]]]].
38
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    73
44
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    74
    ^ '%1 [%2%3]' bindWith: executableOrThreadGrouppId 
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    75
                      with: pidOrEmpty ? ''
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    76
                      with: state
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
23
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    78
    "Created: / 22-09-2014 / 00:14:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
44
41cc5a7840fe Debugger UI improvements
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    79
    "Modified: / 07-06-2017 / 07:47:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    80
!
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    81
60
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    82
subject
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    83
    "Return an instance of GDB object that this presenter displays."
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    84
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    85
    ^ threadGroup
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    86
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    87
    "Modified: / 05-02-2018 / 13:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    88
!
bcdb393c956f Cleanup of (former) `VDBModelPresenter`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
    89
23
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    90
threadGroup
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
    91
    ^ threadGroup
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
! !
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
219
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
    94
!VDBThreadGroupPresenter methodsFor:'change & update'!
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
    95
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
    96
updateChildren
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
    97
    | childrenToRemove childrenToAdd |
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
    98
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
    99
    children isNil ifTrue: [ ^ self ].
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   100
    childrenToRemove := children copy.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   101
    childrenToAdd := #().
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   102
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   103
    threadGroup threads do: [:thread |  
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   104
        | child |
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   105
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   106
        child := children detect: [:each | each thread == thread ] ifNone: nil.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   107
        child notNil ifTrue: [ 
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   108
            childrenToRemove remove: child.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   109
            child updateChildren.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   110
        ] ifFalse: [ 
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   111
            child := VDBThreadPresenter new
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   112
                        setThread: thread;
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   113
                        parent: self;
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   114
                        yourself.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   115
            childrenToAdd := childrenToAdd copyWith: child.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   116
        ].
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   117
    ].
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   118
    childrenToRemove notEmpty ifTrue: [ 
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   119
        self removeAll: childrenToRemove.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   120
    ].
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   121
    childrenToAdd notEmpty ifTrue: [ 
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   122
        self addAll: childrenToAdd.
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   123
    ].
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   124
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   125
    "Modified: / 17-05-2021 / 16:24:15 / Jan Vrany <jan.vrany@labware.com>"
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   126
! !
6ab12a17ca3b UX: selectively update stack tree to minimize changes
Jan Vrany <jan.vrany@labware.com>
parents: 212
diff changeset
   127
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
!VDBThreadGroupPresenter methodsFor:'initialization'!
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
setThreadGroup: aGDBThreadGroup
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    threadGroup := aGDBThreadGroup
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    "Created: / 21-09-2014 / 23:38:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
! !
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
212
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   136
!VDBThreadGroupPresenter methodsFor:'printing & storing'!
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   137
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   138
printOn:aStream
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   139
    "append a printed representation of the receiver to the argument, aStream"
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   140
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   141
    super printOn:aStream.
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   142
    aStream nextPut:$(.
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   143
    threadGroup printOn:aStream.
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   144
    aStream nextPut:$).
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   145
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   146
    "Created: / 14-05-2021 / 14:34:06 / Jan Vrany <jan.vrany@labware.com>"
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   147
! !
62bb14c71a71 Add `#printOn:` to thread group, thread and frame presenters
Jan Vrany <jan.vrany@labware.com>
parents: 60
diff changeset
   148
22
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
!VDBThreadGroupPresenter methodsFor:'protocol-accessing'!
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
fetchChildren
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
    "should compute the list of children via the model.
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
     Be aware, that the somewhat stupid 'optimization' of how the model is fetched may lead to
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
     a O(n*log n) or even O(n^2) behavior here.
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
     *** to optimize: redefine by subClass"
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    ^ threadGroup threads collect:[ :t | VDBThreadPresenter new setThread: t; parent: self ]
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    "Created: / 21-09-2014 / 23:41:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
! !
6684f4d82301 Temporary commit: reworking VDBStackApplication to support multiple threads and inferiors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
53
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   162
!VDBThreadGroupPresenter methodsFor:'protocol-displaying'!
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   163
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   164
heightOn:aGC
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   165
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   166
    "/ Following is a performance optimization. We know
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   167
    "/ that label will be a string, so passing any string
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   168
    "/ would do (this in the end asks a font metrics).
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   169
    "/ 
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   170
    "/ This saves us a lot of time when system generates
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   171
    "/ a lot of events since #label sends ask GDB dof details
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   172
    height isNil ifTrue:[
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   173
        height := self heightOf:'%1 [%2%3]' on:aGC
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   174
    ].
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   175
    ^ height
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   176
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   177
    "Created: / 15-01-2018 / 09:54:22 / jv"
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   178
! !
738e2f6626bf Win32: initial support for Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   179
23
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   180
!VDBThreadGroupPresenter methodsFor:'testing'!
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   181
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   182
isThreadGroupPresenter
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   183
    ^ true
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   184
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   185
    "Created: / 21-09-2014 / 23:54:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   186
! !
ed5f4b55cee5 Added toolbar and icons. Show all thread groups and threads in stack view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   187
38
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   188
!VDBThreadGroupPresenter class methodsFor:'documentation'!
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   189
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   190
version_HG
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   191
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   192
    ^ '$Changeset: <not expanded> $'
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   193
! !
9b861cb882c8 Show al thread groupd, even terminated ones
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   194