ClassInspectorView.st
author Claus Gittinger <cg@exept.de>
Tue, 21 Apr 2020 13:54:09 +0200
changeset 19580 ce40b5d1e941
parent 19450 2c5138c94562
permissions -rw-r--r--
#FEATURE by cg class: NewSystemBrowser added: #hasRecentlyDebuggedHistoryHolder #recentlyDebuggedHistoryMenu class: NewSystemBrowser class comment/format in: #browseMenu changed: #searchMenu
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18640
e83cc2cd72e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17392
diff changeset
     1
"{ Encoding: utf8 }"
e83cc2cd72e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17392
diff changeset
     2
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
     3
"
205d53e91c52 Initial revision
claus
parents:
diff changeset
     4
 COPYRIGHT (c) 1994 by Claus Gittinger
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
     5
              All Rights Reserved
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
     6
205d53e91c52 Initial revision
claus
parents:
diff changeset
     7
 This software is furnished under a license and may be used
205d53e91c52 Initial revision
claus
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
205d53e91c52 Initial revision
claus
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
205d53e91c52 Initial revision
claus
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
205d53e91c52 Initial revision
claus
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
205d53e91c52 Initial revision
claus
parents:
diff changeset
    12
 hereby transferred.
205d53e91c52 Initial revision
claus
parents:
diff changeset
    13
"
2997
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    14
"{ Package: 'stx:libtool' }"
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    15
15533
705cf3d2d10a class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 13697
diff changeset
    16
"{ NameSpace: Smalltalk }"
705cf3d2d10a class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 13697
diff changeset
    17
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    18
InspectorView subclass:#ClassInspectorView
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    19
	instanceVariableNames:''
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    20
	classVariableNames:''
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    21
	poolDictionaries:''
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    22
	category:'Interface-Inspector'
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    23
!
205d53e91c52 Initial revision
claus
parents:
diff changeset
    24
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    25
!ClassInspectorView class methodsFor:'documentation'!
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    26
205d53e91c52 Initial revision
claus
parents:
diff changeset
    27
copyright
205d53e91c52 Initial revision
claus
parents:
diff changeset
    28
"
205d53e91c52 Initial revision
claus
parents:
diff changeset
    29
 COPYRIGHT (c) 1994 by Claus Gittinger
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    30
              All Rights Reserved
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    31
205d53e91c52 Initial revision
claus
parents:
diff changeset
    32
 This software is furnished under a license and may be used
205d53e91c52 Initial revision
claus
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
205d53e91c52 Initial revision
claus
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
205d53e91c52 Initial revision
claus
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
205d53e91c52 Initial revision
claus
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
205d53e91c52 Initial revision
claus
parents:
diff changeset
    37
 hereby transferred.
205d53e91c52 Initial revision
claus
parents:
diff changeset
    38
"
205d53e91c52 Initial revision
claus
parents:
diff changeset
    39
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    40
2997
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    41
!
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    42
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    43
documentation
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    44
"
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    45
    modified Inspector for Classes; in addition to instance variables,
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    46
    also shows ClassVariables in its left SelectionList.
3200
4889a13402db *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
    47
4889a13402db *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
    48
        Array inspect
4889a13402db *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
    49
        View inspect
2997
928594257211 Move documentation method to class protocol.
Stefan Vogel <sv@exept.de>
parents: 2271
diff changeset
    50
"
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    51
! !
205d53e91c52 Initial revision
claus
parents:
diff changeset
    52
205d53e91c52 Initial revision
claus
parents:
diff changeset
    53
!ClassInspectorView methodsFor:'accessing'!
205d53e91c52 Initial revision
claus
parents:
diff changeset
    54
2271
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    55
fieldList
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    56
    "return a list of names to show in the selectionList"
205d53e91c52 Initial revision
claus
parents:
diff changeset
    57
205d53e91c52 Initial revision
claus
parents:
diff changeset
    58
    |aList|
205d53e91c52 Initial revision
claus
parents:
diff changeset
    59
2271
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    60
    aList := super fieldList.
19450
2c5138c94562 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 19095
diff changeset
    61
    inspectedObject isNil ifTrue:[
2c5138c94562 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 19095
diff changeset
    62
        "/ only happens with becomeNil 
2c5138c94562 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 19095
diff changeset
    63
        "/ as an inspector which is used in debugging tools, I am tolerant
2c5138c94562 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 19095
diff changeset
    64
        ^ aList
2c5138c94562 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 19095
diff changeset
    65
    ].
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    66
205d53e91c52 Initial revision
claus
parents:
diff changeset
    67
    "/
16548
b8f9c3d05c67 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 15533
diff changeset
    68
    "/ add class variables (always sorted)
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    69
    "/
15533
705cf3d2d10a class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 13697
diff changeset
    70
    inspectedObject theNonMetaclass withAllSuperclasses reverseDo:[:aClass |
19095
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    71
        |varNames headLine classNameAsShown|
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    72
2271
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    73
        varNames := aClass classVarNames.
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    74
        varNames notEmpty ifTrue:[
16548
b8f9c3d05c67 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 15533
diff changeset
    75
            varNames sort.
19095
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    76
            classNameAsShown := aClass name allBold.
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    77
            headLine := resources 
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    78
                            string:(aClass isSharedPool 
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    79
                                ifTrue:['pool variables in %1']
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    80
                                ifFalse:['class variables from %1']
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    81
                            ) 
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    82
                            with:classNameAsShown.
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    83
            aList add:('----- ',headLine,' -----').
2271
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    84
            varNames do:[:classVarName |
19095
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    85
                |value|
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    86
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    87
                value := aClass classVarAt:classVarName.
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    88
                aList add:(self listEntryForName:classVarName value:value).
5d44c62ca402 #UI_ENHANCEMENT by exept
Claus Gittinger <cg@exept.de>
parents: 18640
diff changeset
    89
                "/ aList add:classVarName
2271
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    90
            ]
0cf238543cb1 fixed and improved fieldNameList generation & use.
Claus Gittinger <cg@exept.de>
parents: 2236
diff changeset
    91
        ]
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
    92
    ].
205d53e91c52 Initial revision
claus
parents:
diff changeset
    93
    ^ aList
17392
8421115ff73b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 16654
diff changeset
    94
8421115ff73b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 16654
diff changeset
    95
    "Modified: / 12-02-2017 / 11:03:47 / cg"
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
    96
!
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
    97
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
    98
valueAtLine:lineNr
18640
e83cc2cd72e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17392
diff changeset
    99
    "helper - return the value of the selected entry"
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   100
16654
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   101
    |list idx0 nm cls|
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   102
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   103
    list := super fieldList.
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   104
    lineNr <= list size ifTrue:[ ^ super valueAtLine:lineNr ].
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   105
16654
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   106
    nm := self listEntryAt:lineNr.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   107
    nm isNil ifTrue:[ ^nil].
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   108
16654
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   109
    "/
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   110
    "/ a class variable?
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   111
    "/
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   112
    cls := inspectedObject class theNonMetaclass whichClassDefinesClassVar:nm.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   113
    cls notNil ifTrue:[
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   114
        ^ cls classVarAt:nm.
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   115
    ].
16654
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   116
    
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   117
"/    idx0 := list size + 1.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   118
"/    inspectedObject class withAllSuperclasses reverseDo:[:aClass |
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   119
"/        |varNames varName|
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   120
"/
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   121
"/        varNames := aClass classVarNames.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   122
"/        varNames notEmpty ifTrue:[
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   123
"/            (lineNr between:idx0+1 and:(idx0 + 1 + varNames size - 1)) ifTrue:[
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   124
"/                varName := varNames at:lineNr-idx0.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   125
"/                ^ aClass classVarAt:varName.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   126
"/            ].
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   127
"/            idx0 := idx0 + varNames size + 1.
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   128
"/        ]
769d7d0f32b4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16548
diff changeset
   129
"/    ].
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   130
    ^ nil
18640
e83cc2cd72e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17392
diff changeset
   131
e83cc2cd72e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17392
diff changeset
   132
    "Modified (comment): / 01-03-2019 / 20:21:18 / Claus Gittinger"
30
205d53e91c52 Initial revision
claus
parents:
diff changeset
   133
! !
205d53e91c52 Initial revision
claus
parents:
diff changeset
   134
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   135
!ClassInspectorView class methodsFor:'documentation'!
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   136
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   137
version
16548
b8f9c3d05c67 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 15533
diff changeset
   138
    ^ '$Header$'
2236
257f587ad7dc migrate instvars 'inspectedObject' to 'object'
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   139
! !
12447
a35a8b2fe1f5 class: ClassInspectorView
Claus Gittinger <cg@exept.de>
parents: 3201
diff changeset
   140