--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ContextInspectorView.st Fri Aug 12 01:38:38 1994 +0200
@@ -0,0 +1,159 @@
+"{ Package: 'Programming Tools' }"
+
+"
+ COPYRIGHT (c) 1993 by Claus Gittinger
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+
+InspectorView subclass:#ContextInspectorView
+ instanceVariableNames:'inspectedContext'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Inspector'
+!
+
+ContextInspectorView comment:'
+COPYRIGHT (c) 1993 by Claus Gittinger
+ All Rights Reserved
+
+$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.1 1994-08-11 23:38:38 claus Exp $
+'!
+
+!ContextInspectorView class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1993 by Claus Gittinger
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+version
+"
+$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.1 1994-08-11 23:38:38 claus Exp $
+"
+!
+
+documentation
+"
+ a modified Inspector for Contexts (used in Debugger)
+"
+! !
+
+!ContextInspectorView methodsFor:'accessing'!
+
+inspect:con
+ "set the context to be inspected"
+
+ |aList homeContext method names rec sel implementorClass argNames varNames|
+
+ realized ifFalse:[^ self].
+
+ inspectedObject := nil.
+ inspectedContext := con.
+ con isNil ifTrue:[
+ inspectedValues := nil.
+ listView contents:nil.
+ ^ self
+ ].
+
+ homeContext := con methodHome.
+ rec := homeContext receiver.
+ sel := homeContext selector.
+
+ implementorClass := homeContext searchClass whichClassImplements:sel.
+ implementorClass notNil ifTrue:[
+ method := implementorClass compiledMethodAt:sel.
+ names := method methodArgAndVarNames
+ ].
+
+ "create dummy names (if there is no source available)"
+ names isNil ifTrue:[
+ names := OrderedCollection new.
+ 1 to:homeContext nargs do:[:index |
+ names add:('mArg' , index printString)
+ ].
+ 1 to:homeContext nvars do:[:index |
+ names add:('mVar' , index printString)
+ ].
+ ].
+
+ aList := OrderedCollection new.
+
+ "
+ stupid: should find the block via the contexts
+ method-home and put real names in here
+ "
+ con isBlockContext ifTrue:[
+ argNames := (1 to:(con nargs)) collect:[:i | 'arg' , i printString].
+ aList addAll:argNames.
+ varNames := (1 to:(con nvars)) collect:[:i | 'var' , i printString].
+ aList addAll:varNames.
+ aList addAll:names.
+ inspectedValues := (Array withAll:(con argsAndVars)) , homeContext argsAndVars
+ ] ifFalse:[
+ aList addAll:names.
+ inspectedValues := homeContext argsAndVars
+ ].
+ listView contents:aList.
+
+ workspace contents:nil.
+"
+ self setDoitActionIn:workspace for:con.
+"
+ workspace doItAction:[:theCode |
+ Compiler evaluate:theCode
+ in:con
+ receiver:nil
+ notifying:workspace
+ ifFail:nil
+ ]
+!
+
+release
+ "release inspected object"
+
+ inspectedContext := nil.
+ super release
+! !
+
+!ContextInspectorView methodsFor:'private'!
+
+setDoitActionIn:aWorkspace for:aContext
+ aWorkspace doItAction:[:theCode |
+ Compiler evaluate:theCode
+ in:aContext
+ receiver:nil
+ notifying:aWorkspace
+ ifFail:nil
+ ]
+! !
+
+!ContextInspectorView methodsFor:'user actions'!
+
+doAccept:theText
+ |value|
+
+ selectedLine notNil ifTrue:[
+ value := Compiler evaluate:theText
+ receiver:inspectedObject
+ notifying:workspace.
+
+ "yes, you can do that with a context"
+ inspectedContext at:selectedLine put:value.
+ ].
+! !