--- a/InspectorView.st Wed Nov 23 00:12:17 1994 +0100
+++ b/InspectorView.st Mon Nov 28 22:11:47 1994 +0100
@@ -13,7 +13,7 @@
View subclass:#InspectorView
instanceVariableNames:'listView workspace
inspectedObject selectedLine
- inspectedValues nShown menu1 menu2'
+ inspectedValues nShown hasMore menu1 menu2'
classVariableNames:''
poolDictionaries:''
category:'Interface-Inspector'
@@ -23,7 +23,7 @@
COPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libtool/InspectorView.st,v 1.12 1994-11-17 14:46:51 claus Exp $
+$Header: /cvs/stx/stx/libtool/InspectorView.st,v 1.13 1994-11-28 21:11:42 claus Exp $
'!
!InspectorView class methodsFor:'documentation'!
@@ -44,7 +44,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/InspectorView.st,v 1.12 1994-11-17 14:46:51 claus Exp $
+$Header: /cvs/stx/stx/libtool/InspectorView.st,v 1.13 1994-11-28 21:11:42 claus Exp $
"
!
@@ -167,11 +167,13 @@
menu1 := PopUpMenu
labels:(resources array:#(
'inspect'
+ 'basicInspect'
"/ '-'
"/ 'owners'
))
selectors:#(
doInspect
+ doBasicInspect
"/ nil
"/ inspectOwners
)
@@ -180,10 +182,11 @@
menu2 := PopUpMenu
labels:(resources array:#(
'inspect'
+ 'basicInspect'
'-'
'show more'
))
- selectors:#(doInspect nil showMore)
+ selectors:#(doInspect doBasicInspect nil showMore)
receiver:self
for:listView.
!
@@ -227,9 +230,10 @@
!InspectorView methodsFor:'private'!
listOfNames
- "return a list of names to show in the selectionList"
+ "return a list of names to show in the selectionList.
+ Leave hasMore as true, if a '...' entry should be added."
- |aList n cut cls|
+ |aList n cls|
aList := OrderedCollection new.
aList add:'self'.
@@ -247,25 +251,23 @@
n := inspectedObject basicSize.
(n > nShown) ifTrue:[
n := nShown.
- cut := true.
+ hasMore := true.
listView setMiddleButtonMenu:menu2.
] ifFalse:[
- cut := false.
listView setMiddleButtonMenu:menu1.
].
1 to:n do:[:index |
aList add:(index printString)
].
- cut ifTrue:[
- aList add:' ... '
- ]
].
^ aList
!
showMore
- nShown := nShown * 2.
- self inspect:inspectedObject
+ hasMore ifTrue:[
+ nShown := nShown * 2.
+ self inspect:inspectedObject
+ ]
!
setDoItAction
@@ -299,9 +301,14 @@
inspectedObject := anObject.
self initializeListViewMiddleButtonMenus.
listView setMiddleButtonMenu:menu1.
- realized ifFalse:[^ self].
+"/ realized ifFalse:[^ self].
+ hasMore := false.
aList := self listOfNames.
+ hasMore ifTrue:[
+ aList add:' ... '
+ ].
+
sameObject ifTrue:[
listView setContents:aList
] ifFalse:[
@@ -392,6 +399,29 @@
super destroy
!
+valueAtLine:lineNr
+ "helper - return the value of the selected entry"
+
+ |index|
+
+ inspectedValues notNil ifTrue:[
+ ^ inspectedValues at:lineNr
+ ].
+
+ lineNr == 1 ifTrue:[
+ ^ inspectedObject
+ ].
+ index := lineNr - 1. "/ skip self
+ (inspectedObject class isVariable) ifFalse:[
+ ^ inspectedObject instVarAt:index
+ ].
+ index <= (inspectedObject class instSize) ifTrue:[
+ ^ inspectedObject instVarAt:index
+ ].
+ index := index - inspectedObject class instSize.
+ ^ inspectedObject basicAt:index
+!
+
showSelection:lineNr
"user clicked on an instvar - show value in workspace"
@@ -400,33 +430,19 @@
"
workspace contents:nil.
"
- (lineNr == listView list size
- and:[(listView listAt:lineNr) startsWith:' ...']) ifTrue:[
+ (hasMore and:[lineNr == listView list size]) ifTrue:[
"clicked on the '...' entry"
self showMore.
listView selection:lineNr.
].
- inspectedValues isNil ifTrue:[
- lineNr == 1 ifTrue:[
- "selecting self also does a re-set, this allows updating the list"
- self inspect:inspectedObject.
- val := inspectedObject
- ] ifFalse:[
- index := lineNr - 1.
- (inspectedObject class isVariable) ifFalse:[
- val := inspectedObject instVarAt:index
- ] ifTrue:[
- index <= (inspectedObject class instSize) ifTrue:[
- val := inspectedObject instVarAt:index
- ] ifFalse:[
- index := index - inspectedObject class instSize.
- val := inspectedObject basicAt:index
- ]
- ]
- ]
+ (inspectedValues isNil
+ and:[lineNr == 1]) ifTrue:[
+ "selecting self also does a re-set, this allows updating the list"
+ self inspect:inspectedObject.
+ val := inspectedObject
] ifFalse:[
- val := inspectedValues at:lineNr
+ val := self valueAtLine:lineNr
].
string := val displayString.
"
@@ -468,35 +484,37 @@
inspectedObject changed
!
-doInspect
+doInspect:basic
"user selected inspect-menu entry"
- |index objectToInspect|
+
+ |objectToInspect|
selectedLine notNil ifTrue:[
- inspectedValues isNil ifTrue:[
- (selectedLine == 1) ifTrue:[
- objectToInspect := inspectedObject
- ] ifFalse:[
- index := selectedLine - 1.
- (inspectedObject class isVariable) ifFalse:[
- objectToInspect := inspectedObject instVarAt:index
- ] ifTrue:[
- index <= (inspectedObject class instSize) ifTrue:[
- objectToInspect := inspectedObject instVarAt:index
- ] ifFalse:[
- index := index - inspectedObject class instSize.
- objectToInspect := inspectedObject basicAt:index
- ]
- ]
- ]
+ objectToInspect := self valueAtLine:selectedLine.
+ basic ifTrue:[
+ objectToInspect basicInspect
] ifFalse:[
- objectToInspect := inspectedValues at:selectedLine ifAbsent:[^ self]
- ].
- objectToInspect inspect
+ objectToInspect inspect
+ ]
]
!
+doInspect
+ "user selected inspect-menu entry"
+
+ self doInspect:false
+!
+
+doBasicInspect
+ "user selected inspect-menu entry"
+
+ self doInspect:true
+!
+
inspectOwners
+ "open an inspector on owners of the inspectedObject.
+ (this is a secret function)"
+
self withCursor:(Cursor questionMark) do:[
|owners dict|