InspectorView.st
changeset 56 d0cb937cbcaa
parent 52 7b48409ae088
child 61 cb5e3560bd82
--- 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|