VDBRegisterListApplication.st
author Jan Vrany <jan.vrany@labware.com>
Thu, 18 Nov 2021 22:33:41 +0000
changeset 244 5093490824df
parent 243 a3ea49d8ac0e
child 251 1519e5fd57bd
permissions -rw-r--r--
UI: temporary fix to avoid register list flickering when single-stepping This commit prevents annying flickering when updating register list after single-step. This is cause by slow refetch of all register values. To avoid this, we first force all registers to refetch value and then schedule redraw. However, a proper solution would be to move this up to `VDBAbstractListApplication` and do it there and only for list items which a visible. This is left as future work - once done, this commit should be reverted.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:vdb - Visual / VM Debugger
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
     4
Copyright (C) 2021 LabWare
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
"{ Package: 'jv:vdb' }"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ NameSpace: Smalltalk }"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
VDBAbstractTreeApplication subclass:#VDBRegisterListApplication
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	instanceVariableNames:'registerListHolder selectedRegisterHolder'
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	classVariableNames:''
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	poolDictionaries:''
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	category:'VDB-UI-Others'
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!VDBRegisterListApplication class methodsFor:'documentation'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
copyright
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
jv:vdb - Visual / VM Debugger
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
Copyright (C) 2015-now Jan Vrany
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
    27
Copyright (C) 2021 LabWare
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!VDBRegisterListApplication class methodsFor:'accessing'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
115
0dd989ce3ae7 Cleanup default window titles
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
    37
defaultWindowTitle
0dd989ce3ae7 Cleanup default window titles
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
    38
    ^ self resources string:'Registers'
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    "Created: / 11-07-2017 / 16:37:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
d293d117e978 Add register view to frame details application (`VDBFrameApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
    41
    "Modified: / 01-10-2018 / 12:08:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!VDBRegisterListApplication class methodsFor:'interface specs'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
columnsSpec
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    "This resource specification was automatically generated
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
     by the DataSetBuilder of ST/X."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Do not manually edit this!! If it is corrupted,
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
     the DataSetBuilder may not be able to read the specification."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    "
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
     DataSetBuilder new openOnClass:VDBFrameApplication andSelector:#columnsSpec
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    "
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    <resource: #tableColumns>
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    ^#(
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
      (DataSetColumnSpec
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
         label: 'Value'
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
         labelAlignment: left
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
         labelButtonType: Button
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
         width: 1.0
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
         height: heightOfFirstRow
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
         menuFromApplication: false
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
         printSelector: value
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
         backgroundSelector: backgroundColor
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
         showRowSeparator: false
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
         showColSeparator: false
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
       )
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
      )
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
!VDBRegisterListApplication class methodsFor:'plugIn spec'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
aspectSelectors
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "This resource specification was automatically generated
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
     by the UIPainter of ST/X."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "Do not manually edit this. If it is corrupted,
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
     the UIPainter may not be able to read the specification."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    "Return a description of exported aspects;
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
     these can be connected to aspects of an embedding application
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
     (if this app is embedded in a subCanvas)."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    ^ #(
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
        #debuggerHolder
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
    91
        #frameHolder
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
        #registerListHolder
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
        #selectedRegisterHolder
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
      ).
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    "Modified: / 27-09-2018 / 20:32:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
    97
    "Modified: / 12-03-2021 / 15:44:08 / Jan Vrany <jan.vrany@labware.com>"
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
!VDBRegisterListApplication class methodsFor:'startup-web applications'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
initialPageSpec
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    "this is only required for web-applications"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ^ self shouldImplement
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
pageSpecs
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    "this is only required for web-applications"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    ^ self shouldImplement
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
!VDBRegisterListApplication methodsFor:'aspects'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
backgroundColorFor: aVDBRegisterPresenter
242
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   117
    <resource: #style (#'registerListApplication.changedRegisterBackgroundColor')>
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   118
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   119
    aVDBRegisterPresenter register hasChanged ifTrue:[ 
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   120
        ^ self styleSheet colorAt: 'registerListApplication.changedRegisterBackgroundColor' default:[ Color yellow lighter lighter ]
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   121
    ].
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   122
    ^ nil
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   123
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   124
    "
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   125
    VDBRegisterListApplication initializeDefaultStyleSheet; defaultStyleSheet.
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   126
    "
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    "Created: / 01-02-2018 / 09:08:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
    "Modified: / 27-09-2018 / 20:41:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
242
625254789cc8 UI: add theme support to register list
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   130
    "Modified (comment): / 18-11-2021 / 12:20:35 / Jan Vrany <jan.vrany@labware.com>"
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   133
frameHolder: aValueModel
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   134
    | registers |
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   135
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   136
    registers := (AspectAdaptor forAspect:#registers)
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   137
                    subjectChannel: aValueModel;
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   138
                    yourself.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   139
    self registerListHolder: registers
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   140
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   141
    "Created: / 12-03-2021 / 15:43:53 / Jan Vrany <jan.vrany@labware.com>"
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   142
!
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   143
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
registerListHolder
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    "return/create the 'variableObjectListHolder' value holder (automatically generated)"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    registerListHolder isNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
        registerListHolder := ValueHolder with: #().
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
        registerListHolder addDependent:self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    ^ registerListHolder
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    "Created: / 27-09-2018 / 20:31:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
registerListHolder:something
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    "set the 'variableObjectListHolder' value holder (automatically generated)"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    |oldValue newValue|
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
    registerListHolder notNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
        oldValue := registerListHolder value.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
        registerListHolder removeDependent:self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    registerListHolder := something.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    registerListHolder notNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
        registerListHolder addDependent:self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    newValue := registerListHolder value.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    oldValue ~~ newValue ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
        self update:#value with:newValue from:registerListHolder.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Created: / 27-09-2018 / 20:31:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
selectedRegisterHolder
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
    "return/create the 'selectedVariableHolder' value holder (automatically generated)"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    selectedRegisterHolder isNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
        selectedRegisterHolder := ValueHolder new.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
        selectedRegisterHolder addDependent:self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    ^ selectedRegisterHolder
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    "Created: / 27-09-2018 / 20:31:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
selectedRegisterHolder:something 
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
    "set the 'selectedVariableHolder' value holder (automatically generated)"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
    | oldValue  newValue |
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
    selectedRegisterHolder notNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
        oldValue := selectedRegisterHolder value.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
        selectedRegisterHolder removeDependent:self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
    selectedRegisterHolder := something.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    selectedRegisterHolder notNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
        selectedRegisterHolder addDependent:self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    newValue := selectedRegisterHolder value.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    oldValue ~~ newValue ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
        self 
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
            update:#value
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
            with:newValue
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
            from:selectedRegisterHolder.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    "Created: / 27-09-2018 / 20:31:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
!VDBRegisterListApplication methodsFor:'change & update'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
update:aspect with:param from:sender
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    "Invoked when an object that I depend upon sends a change notification."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    sender == registerListHolder ifTrue:[ 
151
bc7626f46210 Performance: do not update contents of windows when not needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   219
         self enqueueDelayedUpdateContents.
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
         ^ self.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
    super update:aspect with:param from:sender
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
151
bc7626f46210 Performance: do not update contents of windows when not needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   224
    "Modified: / 14-02-2019 / 16:31:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
!VDBRegisterListApplication methodsFor:'change & update-delayed'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
244
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   229
delayedInvalidateInternalList
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   230
    | scrolledView |
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   231
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   232
    internalListView notNil ifTrue:[
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   233
        scrolledView := internalListView scrolledView.
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   234
        (scrolledView notNil and:[ scrolledView isVisible ]) ifTrue:[
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   235
            | registerPs |
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   236
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   237
            registerPs := self internalListHolder value.
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   238
            registerPs notEmptyOrNil ifTrue: [ 
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   239
                registerPs do: [:each | each valueString ]
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   240
            ].
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   241
        ]
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   242
    ].
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   243
    super delayedInvalidateInternalList.
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   244
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   245
    "Created: / 18-11-2021 / 18:02:40 / Jan Vrany <jan.vrany@labware.com>"
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   246
!
5093490824df UI: temporary fix to avoid register list flickering when single-stepping
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   247
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
delayedUpdateInternalList
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   249
    | registers registerPs mustUpdate |
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    registers := self registerListHolder value ? #().
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   252
    registerPs := self internalListHolder root children.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   253
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   254
    "/ Since set of registers for given inferior is 99% likely to
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   255
    "/ be the same all the time, here we keep the list of presenters
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   256
    "/ and only update presenter's register if possible. This avoids
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   257
    "/ flickering and preserve selection and scroll position.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   258
    "/ 
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   259
    "/ Still, we have to catch the case the set of registers changes -
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   260
    "/ this may happen on IBM Cell or when debugging multiple inferiors
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   261
    "/ each running different architecture.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   262
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   263
    mustUpdate := registers size ~~ registerPs size.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   264
    mustUpdate ifFalse: [
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   265
        | i |
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   266
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   267
        i := 1.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   268
        [ mustUpdate not and: [ i <= registers size ] ] whileTrue: [
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   269
            (registers at: i) register = (registerPs at: i) register register ifTrue: [
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   270
                "/ Good, this presenter is for the same register, so just
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   271
                "/ updates it's value
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   272
                (registerPs at: i) setRegister: (registers at: i)
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   273
            ] ifFalse: [ 
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   274
                "/ Hmm...some other register, we need a full update
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   275
                "/ (this also short-circuits the loop)
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   276
                mustUpdate := true.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   277
            ].
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   278
            i := i + 1.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   279
        ]
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   280
    ].
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   281
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   282
    mustUpdate ifTrue: [
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   283
        "/ Full update is needed, regenerate a list of registers.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   284
        registerPs := registers collect:[ :reg | VDBRegisterPresenter new setRegister: reg ].
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   285
        self internalListHolder root 
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   286
            children: registerPs;
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   287
            expand.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   288
    ] ifFalse: [
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   289
        "/ No full update needed, but some of the values may have changed,
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   290
        "/ so redraw the list (remember, register values in presenter objects
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   291
        "/ are already updated, see the loop above).
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   292
        self delayedInvalidateInternalList.
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   293
    ].
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    "Modified: / 28-09-2018 / 06:50:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
211
2bf7c99e6efa UI: avoid regenerating register list if possible to avoid flickering
Jan Vrany <jan.vrany@labware.com>
parents: 151
diff changeset
   296
    "Modified (format): / 12-03-2021 / 17:56:34 / Jan Vrany <jan.vrany@labware.com>"
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
delayedUpdateSelection
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
    | internalSelection |
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
    internalSelection := self internalSelectionHolder value.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
    internalSelection notNil ifTrue:[
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
        self selectedRegisterHolder value: internalSelection register
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    ] ifFalse:[ 
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
        self selectedRegisterHolder value: nil
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    ].
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    "Modified: / 27-09-2018 / 21:08:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
!VDBRegisterListApplication methodsFor:'drag & drop'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
dropObjects:aCollectionOfDropObjects
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
    "drop manager wants to drop.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
     This is ony sent, if #canDrop: returned true.
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
     Must be redefined in order for drop to work."
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
    ^ self shouldImplement
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
!VDBRegisterListApplication methodsFor:'event handling'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
243
a3ea49d8ac0e UX: hilight changed register when changed via API
Jan Vrany <jan.vrany@labware.com>
parents: 242
diff changeset
   324
onRegisterValueChangedEvent: aGDBRegisterValueChangedEvent
a3ea49d8ac0e UX: hilight changed register when changed via API
Jan Vrany <jan.vrany@labware.com>
parents: 242
diff changeset
   325
    self enqueueDelayedInvalidateInternalList
a3ea49d8ac0e UX: hilight changed register when changed via API
Jan Vrany <jan.vrany@labware.com>
parents: 242
diff changeset
   326
a3ea49d8ac0e UX: hilight changed register when changed via API
Jan Vrany <jan.vrany@labware.com>
parents: 242
diff changeset
   327
    "Created: / 18-11-2021 / 12:09:00 / Jan Vrany <jan.vrany@labware.com>"
a3ea49d8ac0e UX: hilight changed register when changed via API
Jan Vrany <jan.vrany@labware.com>
parents: 242
diff changeset
   328
!
a3ea49d8ac0e UX: hilight changed register when changed via API
Jan Vrany <jan.vrany@labware.com>
parents: 242
diff changeset
   329
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
onStoppedEvent: aGDBStoppedEvent
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
    self enqueueDelayedInvalidateInternalList
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    "Created: / 01-02-2018 / 23:14:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
!VDBRegisterListApplication methodsFor:'initialization & release'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
subscribe   
241
9996050286c5 Always call `super subscribe` when overriding
Jan Vrany <jan.vrany@labware.com>
parents: 211
diff changeset
   339
    super subscribe.
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    debugger announcer
241
9996050286c5 Always call `super subscribe` when overriding
Jan Vrany <jan.vrany@labware.com>
parents: 211
diff changeset
   342
        when: GDBStoppedEvent               send: #onStoppedEvent: to: self;
9996050286c5 Always call `super subscribe` when overriding
Jan Vrany <jan.vrany@labware.com>
parents: 211
diff changeset
   343
        when: GDBRegisterValueChangedEvent  send: #onRegisterValueChangedEvent: to: self.
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    "Created: / 01-02-2018 / 23:07:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
241
9996050286c5 Always call `super subscribe` when overriding
Jan Vrany <jan.vrany@labware.com>
parents: 211
diff changeset
   346
    "Modified: / 18-11-2021 / 12:08:45 / Jan Vrany <jan.vrany@labware.com>"
9996050286c5 Always call `super subscribe` when overriding
Jan Vrany <jan.vrany@labware.com>
parents: 211
diff changeset
   347
    "Modified (comment): / 18-11-2021 / 16:24:43 / Jan Vrany <jan.vrany@labware.com>"
110
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
!VDBRegisterListApplication class methodsFor:'documentation'!
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
version_HG
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
    ^ '$Changeset: <not expanded> $'
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
! !
7150377a44e1 UI: add register view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356