forked from pharo-project/pharo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Object.extension.st
82 lines (67 loc) · 2.52 KB
/
Object.extension.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Extension { #name : #Object }
{ #category : #'*GT-Inspector' }
Object >> gtDisplayOn: stream [
"This offers a means to customize how the object is shown in the inspector"
^ self printOn: stream
]
{ #category : #'*GT-Inspector' }
Object >> gtDisplayString [
"This offers a means to customize how the object is shown in the inspector.
Do not override this method. Override gtDisplayOn: instead"
| limitedString limit |
limit := 1000.
limitedString := String streamContents: [:s | self gtDisplayOn: s] limitedTo: limit.
limitedString size < limit ifTrue: [^ limitedString].
^ limitedString , ' ...'
]
{ #category : #'*GT-Inspector' }
Object >> gtInspectorHash [
^ self identityHash.
]
{ #category : #'*GT-Inspector' }
Object >> gtInspectorIcon [
^ self iconOrThumbnailOfSize: 16
]
{ #category : #'*GT-Inspector' }
Object >> gtInspectorInterestingObject [
^ self
]
{ #category : #'*GT-Inspector' }
Object >> gtInspectorRawIn: composite [
"This is the most basic presentation showing the state of the object"
^ composite custom: GTObjectVariablesBrowser new
]
{ #category : #'*GT-Inspector' }
Object >> gtInspectorVariableNodesIn: aCollection [
"This is a helper method that adds to the given collection all nodes modeling named and
indexed attributes for the current object.
Subclasses can override it to specialize what appears in the variables presentation."
| indexableDisplayLimit top bottom topLimit bottomLimit |
indexableDisplayLimit := GTInspector indexableDisplayLimit.
top := 1.
bottom := self basicSize.
topLimit := indexableDisplayLimit min: bottom.
bottomLimit := indexableDisplayLimit max: (bottom - indexableDisplayLimit).
top to: topLimit do: [ :index |
aCollection add: (GTInspectorIndexedNode hostObject: self index: index) ].
bottomLimit + 1 to: bottom do: [ :index |
aCollection add: (GTInspectorIndexedNode hostObject: self index: index) ].
aCollection
addAll: ((self class allSlots collect: [ :slot |
GTInspectorSlotNode hostObject: self slot: slot ]))
]
{ #category : #'*GT-Inspector' }
Object >> gtInspectorVariableValuePairs [
"This is a helper method that returns a collection of
variable_name -> value
for the current object.
Subclasses can override it to specialize what appears in the variables presentation"
| bindings |
bindings := OrderedCollection new.
self gtInspectorVariableNodesIn: bindings.
^ bindings collect: [ :aNode | aNode key -> aNode value ]
]
{ #category : #'*GT-Inspector' }
Object >> inspectInExternalWindow [
^ GTInspector new openInExternalWindowOn: self
]