eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'InspectorView':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: InspectorView


Inheritance:

   Object
   |
   +--GraphicsMedium
      |
      +--DisplaySurface
         |
         +--SimpleView
            |
            +--InspectorView
               |
               +--ClassInspectorView
               |
               +--ColorInspectorView
               |
               +--ContextInspectorView
               |
               +--DictionaryInspectorView
               |
               +--ImageInspectorView
               |
               +--OrderedCollectionInspectorView
               |
               +--SetInspectorView

Package:
stx:libtool
Category:
Interface-Inspector
Version:
rev: 1.408 date: 2018/05/13 13:16:09
user: cg
file: InspectorView.st directory: libtool
module: stx stc-classLibrary: libtool
Author:
Claus Gittinger

Description:


This class implements a graphical inspector.
Inspecting can be done on an object -
(where its instvarnames/values are inspected)
or a list of objects (where a nameArray/valuesArray is inspected).
The later is used by the debugger to inspect method variables/args.

The system calls the inspector through the global variable 'Inspector'
which is bound to this class (but could be redefined - it actually is
set to MiniInspector in a smalltalk without graphical user interface,
or to NewInspector if that is wanted).

Also notice, that there are two methods to inspect an object:
sending #basicInspect to any object, will open this kind of inspector on 
it (showing instance variables which are physically present).

Sending it #inspect, will - depending on the object - sometimes invoke a
specialized inspector. 
(see OrderedCollectionInspectorView, ImageInspectorView, 
 ColorInspectorView etc. as examples).

You can also open a monitoring inspector, which displays some instance
variable in regular intervals. See #openOn:monitor:.

examples:
        #(1 2 3 4) asOrderedCollection inspect
        #(1 2 3 4) asOrderedCollection basicInspect
        (Array new:10000) inspect
        (Image fromFile:'bitmaps/claus.gif') inspect
        (Image fromFile:'bitmaps/claus.gif') basicInspect
        (Image fromFile:'bitmaps/SBrowser.xbm') inspect
        (Image fromFile:'bitmaps/SBrowser.xbm') basicInspect

        InspectorView openOn:Display
        InspectorView openOn:Display monitor:'shiftDown'
        InspectorView openOn:(Image fromScreen)
        InspectorView openOn:(Image fromFile:'banner8.xpm')

The InspectorView can also be used as a subComponent within another view.
In this case, the isStandAlone flag should be cleared, to prevent the
inspector from changing the topViews window label.

Notice:
    the instvars 'inspectedObject' and 'selectedLine' have been 
    renamed to 'object' and 'selectionIndex' for squeak compatibility;
    however, the old vars are kept (in sync) for a while, to allow for
    smooth migration.

  Controlling the contents from the inspected object.

By redefining inspectorExtraAttributes or inspectorExtraNamedFields, the inspected
object can add items to the list of fields as ashown in the left list-view of the inspector.
These methods are meant to return a sequencable Collection of Associations, which represent
of pseudo slot-name, slot-value pairs.
In the list, extra attributes are shown with a dash (-), extra named fields are marked with a tick (`).
These are added (read only) to the list.


Class protocol:

common label support
o  commonLabelFor: anObject
return the windowLabel to use in my topView, when inspecting anObject.
Identical objects are labelled with the same id, which makes it easy to
see if two objects are identical (and is very useful, indeed).
WARNING: used by both Inspector and Inspector2 !!!

o  labelNameFor: anObject
return the iconLabel to use in my topView, when inspecting anObject.
Simply returns the className or name of anObjects class

defaults
o  defaultExtent
return the default extent of my instances.
The value returned here is usually ignored, and
the value from preferredExtent taken instead.

o  defaultHideHashes

o  defaultHideHashes: aBoolean

o  defaultHideMessages

o  defaultHideMessages: aBoolean

o  defaultIcon
return the browsers default window icon

o  defaultIntegerDisplayRadix

o  defaultMaxValueDisplayStringLength
cut off and show '...' if longer

o  defaultMaxValueDisplayStringLength: anIntegerOrNilForDefault
cut off and show '...' if longer

o  defaultSortOrder

o  defaultTopViewExtent

o  expandArraysInAllLists
in the 'all instvars' list, expand arrays

o  expandArraysInAllLists: aBoolean
in the 'all instvars' list, expand arrays

o  rememberLastExtent: anExtent

o  sortOrderAlphabetical

o  sortOrderInstvarOrder

image specs
o  imageFor_arrays
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_arrays inspect
     ImageEditor openOnClass:self andSelector:#imageFor_arrays
     Icon flushCachedIcons

o  imageFor_characters
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_characters inspect
     ImageEditor openOnClass:self andSelector:#imageFor_characters
     Icon flushCachedIcons

o  imageFor_classes
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_classes inspect
     ImageEditor openOnClass:self andSelector:#imageFor_classes
     Icon flushCachedIcons

o  imageFor_collectionHolder
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_collectionHolder inspect
     ImageEditor openOnClass:self andSelector:#imageFor_collectionHolder
     Icon flushCachedIcons

o  imageFor_collections
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_collections inspect
     ImageEditor openOnClass:self andSelector:#imageFor_collections
     Icon flushCachedIcons

o  imageFor_collections_empty
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_collections_empty inspect
     ImageEditor openOnClass:self andSelector:#imageFor_collections_empty
     Icon flushCachedIcons

o  imageFor_colors
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_colors inspect
     ImageEditor openOnClass:self andSelector:#imageFor_colors
     Icon flushCachedIcons

o  imageFor_dictionaries
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_dictionaries inspect
     ImageEditor openOnClass:self andSelector:#imageFor_dictionaries
     Icon flushCachedIcons

o  imageFor_false
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_false inspect
     ImageEditor openOnClass:self andSelector:#imageFor_false
     Icon flushCachedIcons

o  imageFor_falseHolder
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_falseHolder inspect
     ImageEditor openOnClass:self andSelector:#imageFor_falseHolder
     Icon flushCachedIcons

o  imageFor_floats
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_floats inspect
     ImageEditor openOnClass:self andSelector:#imageFor_floats
     Icon flushCachedIcons

o  imageFor_fractions
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_fractions inspect
     ImageEditor openOnClass:self andSelector:#imageFor_fractions
     Icon flushCachedIcons

o  imageFor_integers
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_integers inspect
     ImageEditor openOnClass:self andSelector:#imageFor_integers
     Icon flushCachedIcons

o  imageFor_nil

o  imageFor_nil1
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_nil1 inspect
     ImageEditor openOnClass:self andSelector:#imageFor_nil1
     Icon flushCachedIcons

o  imageFor_nil2
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_nil2 inspect
     ImageEditor openOnClass:self andSelector:#imageFor_nil2
     Icon flushCachedIcons

o  imageFor_nilHolder
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_nilHolder inspect
     ImageEditor openOnClass:self andSelector:#imageFor_nilHolder
     Icon flushCachedIcons

o  imageFor_numberHolder
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_numberHolder inspect
     ImageEditor openOnClass:self andSelector:#imageFor_numberHolder
     Icon flushCachedIcons

o  imageFor_others
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_others inspect
     ImageEditor openOnClass:self andSelector:#imageFor_others
     Icon flushCachedIcons

o  imageFor_othersHolder
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_othersHolder inspect
     ImageEditor openOnClass:self andSelector:#imageFor_othersHolder
     Icon flushCachedIcons

o  imageFor_sequenceableCollections
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_sequenceableCollections inspect
     ImageEditor openOnClass:self andSelector:#imageFor_sequenceableCollections
     Icon flushCachedIcons

o  imageFor_strings
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_strings inspect
     ImageEditor openOnClass:self andSelector:#imageFor_strings
     Icon flushCachedIcons

o  imageFor_symbols
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_symbols inspect
     ImageEditor openOnClass:self andSelector:#imageFor_symbols
     Icon flushCachedIcons

o  imageFor_true
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_true inspect
     ImageEditor openOnClass:self andSelector:#imageFor_true
     Icon flushCachedIcons

o  imageFor_trueHolder
This resource specification was automatically generated
by the ImageEditor of ST/X.
usage example(s):
     self imageFor_trueHolder inspect
     ImageEditor openOnClass:self andSelector:#imageFor_trueHolder
     Icon flushCachedIcons

initialization
o  initialize

instance creation
o  for: anObject
create and launch a new inspector for anObject.
This protocol is a historic leftover - this method will vanish.

o  inspect: anObject
create and launch a new inspector for anObject.
This protocol is a historic leftover - this method will vanish.

o  openOn: anObject
create and launch a new inspector for anObject
usage example(s):
     InspectorView openOn:(5 @ 7)
     InspectorView openOn:(Array new:400)
     DictionaryInspectorView openOn:(IdentityDictionary new)

o  openOn: anObject monitor: anInstVarNameOrNil
create and launch a new inspector for anObject.
If anInstVarNameOrNil is nonNil, let the inspector monitor it
(use an integer-printString as name, for indexed instVars).

o  openOn: anObject title: aString
create and launch a new inspector for anObject
usage example(s):
     InspectorView openOn:(5 @ 7) title:'my point'

o  openOn: anObject withEvalPane: withEvalPane

o  openOn: anObject withEvalPane: withEvalPane withLabel: aLabel

presentation
o  iconForValue: anObject
isNil is not defined in Lazy et al.

o  iconForValueClass: aClass
this is useful if we do not want to or cannot access the value itself easily;
For example as a helper for bridge objects

queries-plugin
o  aspectSelectors


Instance protocol:

accessing
o  allowFollow: aBoolean
enable/disable the follow menu item;
This is disabled for inspectors which are embedded in the debugger

o  dereferenceValueHolders: aBoolean

o  fieldListLabel: aString

o  headLineLabel: aString
an alternative headline label (if used as embedded inspector)

o  headLineLabelView
provides access to the headline

o  hideHashes: aBoolean
hide/show the hash-entries in the field list;
This can be hidden for end-user applications

o  hideMessages: aBoolean
hide/show the messages-entries in the field list;
This can be hidden for end-user applications

o  hideReceiver: aBoolean
hide/show the self-entry for the inspected object;
This is hidden for context inspectors in the debugger

o  inspect: anObject
set/update the object to be inspected

o  inspect: anObject keepSelection: keepSelectionBoolean
set/update the object to be inspected

o  inspectNext: anObject
do a followup inspect on an object.
This does either open a new inspector, or advances
the Inspector2 to anObject

o  isStandaloneInspector: aBoolean
obsolete now

o  label: aString
set the fieldListLabel - obsolete; collides with inherited label-functionality

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  listView

o  maxValueDisplayStringLength
strip off and add '...' if the display string of a selected item is longer.
(can be changed via class default and menu)

o  maxValueDisplayStringLength: something

o  reinspect
update display for a changed inspectedObject

o  suppressHeadline: aBoolean
hide/show the title line above the list/value

o  suppressPseudoSlots: aBoolean
to enable/disable the pseudo slots (eg. inspectorExtraAttributes)

o  workspace

accessing-channels
o  inspectedObjectHolder

o  inspectedObjectHolder: aValueHolder

o  sortOrderHolder

o  sortOrderHolder: aValueHolder

change & update
o  holderChanged: aValueHolder
a valueHolder of which I have registered an iterest
has changed (see the menu item: 'Catch Change').
Remove the interest (no further notifications) either by evaluating:
aValueHolder retractInterestsFor:holderChangeInterest
or:
self doUncatchChanges
here, or via the field menu

o  sortOrderHolderChanged

o  update: something with: aParameter from: changedObject
Invoked when one of my dependees sends a change notification.

drag & drop
o  getDisplayObjects

o  getDropObjects

event handling
o  doubleClickOnLine: lineNr

o  keyPress: key x: x y: y
handle special keys

o  selectedField

o  sizeChanged: how

initialization & release
o  destroy
(comment from inherited method)
unmap & destroy - make me invisible, destroy subviews then
make me unknown to the device

o  initialize
v autoHideScrollBars:true.

o  initializeDragAndDrop

o  realize
delayed setup of lists till first map-time -
this makes startup of inspectors a bit faster

o  release
release inspected object. This is normally not needed,
since the garbage collector will find this memory alone.
However, if some applications keeps invisible inspectors around
(for example, the debugger does this), the inspected object
would be kept from being freed or freed very late.
usage example(s):
to release ref to inspectedObject in doItBlock

o  setInitialSelection
the self-line

menu
o  debugMenu
now contains the trap, references etc. items in a submenu

o  fieldMenu
return the popup menu for the field-list

o  localProtocolMenu
return the menu for the inspected object's local implemented messages

o  numberBaseItems

o  optionalByteArraySelectionItems
|sel|

o  optionalFilenameSelectionItems

o  optionalMethodOrBlockSelectionItems

o  optionalOperationMenuItemsFor: anObject
chance to add instance-specific operation menu items.
See SerialPort as an example

o  optionalStreamSelectionItems

o  optionalToolItems
inserted after inspect/browse

o  optionalViewSelectionItems

o  protocolMenu
return the menu for the inspected object's implemented messages

o  sortOrderItems

menu actions
o  browse

o  browseClass
browseClass:cls

o  browseClassHierarchy

o  browseFullClassProtocol

o  browseHome

o  browseImplementorsOfSymbolValue

o  browseMethodsClass

o  browseReferencesToInstvar

o  browseUpdateMethods

o  browseValue

o  doBack
user selected back-menu entry

o  doBasicInspect
user selected inspect-menu entry

o  doBrowse: what

o  doCatchChanges
remember the interest, in order to be able to retract later

o  doFollow
user selected follow-menu entry

o  doInspect
user selected inspect menu entry

o  doInspectValue
user selected inspect-value menu entry

o  doNewInspect

o  doStartMonitor
start a monitoring process

o  doStopMonitor
stop the monitor

o  doTraceAll
place a trace on all messages sent to the inspected object

o  doTrap
place a trap on a message sent to the inspected object

o  doTrapAll
place a trap on all messages sent to the inspected object

o  doTrapAnyInstVarChange
place a trap which is triggered if any instVar of the inspected object is changed

o  doTrapInstVarChange
place a trap which is triggered if the selected instVar of the inspected object is changed

o  doTrapUpdates
place a trap on all update and XXXChanged messages sent to the inspected object

o  doUncatchChanges

o  doUntrace
remove traps/traces

o  inspectOwners
open an inspector on owners of the inspectedObject.
(this is a secret function)

o  letSelectedObjectPerform: aSelector

o  openApplication
open a windows or osx application (typically a viewer)

o  openFileBrowser

o  openWidgetHierarchy

o  saveBytesToFile

o  setDisplayRadixTo10

o  setDisplayRadixTo16

o  setDisplayRadixTo2

o  setDisplayRadixTo: radix

o  setSortOrderTo: aSymbol
aSymbol must be one of #alphabetical or #instvarOrder

o  setSortOrderToAlphabetical

o  setSortOrderToInstvarOrder

o  showAll
force update (which is otherwise ignored)

o  showAlphabetical: aBoolean

o  showDependents

o  showInWindowsExplorer
show folder in explorer/finder or filebrowser

o  showMore
force update (which is otherwise ignored)

o  showOwners
skip weakArrays ... (they don't count)

o  showReferences
user selected references-menu entry

o  showStreamContents

presentation
o  appendDisplayStringForElementsOf: val indent: lvl pad: padding to: aStream
s nextPutAll:(self stringWithAllInstVarValuesFor:el level:lvl+4)

o  basicDisplayStringForValue: someValue
return the value's displayString to be pasted into the workspace.

o  displayStringForValue: someValue
return the value's displayString to be pasted into the workspace.

o  iconForValue: arg

o  listEntryForName: nameString value: value
generates the fieldListEntry (icon + valueString)

o  plainValueStringInListEntryForValue: value
returns nil or a string to show in angle brackets (or parenthesis) after the
name in the field list.
This is the string shown in the name list on the left

o  stringWithAllClassVarValues

o  stringWithAllClassVarValuesFor: anObject level: lvl
sortOrder == SortOrderAlphabetical

o  stringWithAllIndexedVarValues

o  stringWithAllInstVarValues

o  stringWithAllInstVarValuesFor: anObject level: lvl

o  stringWithMessages: which

o  valueStringInListEntryForValue: value
returns something to append to the name

private
o  baseInspectedObjectClass
only instvars below that are shown by me in the non-basic tab.
This hides uninterresting details in the regular tab

o  defaultLabel

o  derivedFieldNames

o  derivedFields

o  extraNamedFieldNames

o  extraNamedFields
another extension mechanism (only used in some java packages):
by redefining inspectorExtraNamedFields in an object to return an array of
pseudo-fieldName->value associations, the inspector's left list can be extended

o  extraNamedVarIndexForLine: lineNr
helper - return the index for a named instVar;
nil, if self or a keyed instvar is selected.

o  fieldList
return a list of names to show in the selectionList.
Leave hasMore as true, if a '...' entry should be added.

o  hasSelfEntry

o  indexList
return a list of indexes usable to access the object's indexed slots.
Set hasMore to true, if a '...' entry should be added.

o  indexOfFirstNamedInstvarInList
helper - return the index for the first named instVar;
nil, if self or a keyed instvar is selected.

o  indexedFieldList
return a list of indexed-variable names to show in the selectionList.
Set hasMore to true, if a '...' entry should be added.

o  indexedValueAtIndex: idx

o  indexedValueAtIndex: idx put: newValue

o  indexedValueAtKey: key
kludge

o  instVarIndexForLine: lineNr
helper - return the index for a named instVar;
nil, if self or a keyed instvar is selected.

o  isSpecialPseudoNameEntry: line

o  keyIndexForLine: lineNr
helper - return the index of the key-list;
nil, if self or a namedInstVar is selected.

o  listEntryAt: lineNr

o  myObjectsInspectorExtraAttributes
by redefining inspectorExtraAttributes in an object to return an array of
pseudo-fieldName->value associations, the inspector's left list can be extended

o  namedFieldAt: idx

o  namedFieldAt: idx put: newValue

o  namedFieldList
return a list of instVar names to show in the selectionList.

o  numIndexedFields

o  objectAttributeKeyNames

o  pseudoFieldNames
return a list of names to show in the selectionList.
Leave hasMore as true, if a '...' entry should be added.

o  pseudoFieldNamesWithIndexed: withIndexed
return a list of names to show in the selectionList.
Leave hasMore as true, if a '...' entry should be added.

o  setAcceptAction
set the codeView's accept action

o  setDoItAction
set the codeViews doit action

o  showAllIndexedVarsInFieldList

o  theSingleSelectionIndex
helper - return the index of the (single) selected entry.
Nil if nothing or multiple items are selected

o  valueAtLine: lineNr
helper - return the value of the selected entry

o  valueAtLine: lineNr put: newValue
self or special entry selected - don't store

o  valueForSpecialLine: line
a lot of backward compatibility crab which has to go away...

queries
o  canInspect: anObject

o  compilerClass

o  dereferenceValueHolders

o  isIndexShown

o  labelFor: anObject
return the windowLabel to use in my topView, when inspecting anObject.

o  labelNameFor: anObject
return the iconLabel to use in my topView, when inspecting anObject.
Simply returns the className or name of anObjects class

o  selectedKeyName
used by the debugger, to fetch the selected instVar/pseudoVar name,
so it can be reselected after the next single step
(using tryToSelect..)

o  suppressPseudoSlots
are pseudo slots (eg. inspectorExtraAttributes) suppressed?

selection
o  selection: lineNr

o  showSelection: lineNr
user clicked on an instvar - show value in workspace

o  showValue: someValue
user clicked on an entry - show value in workspace

user interaction
o  doAccept: theText
the selected text is evaluated and stored into the selected field

o  doCopyKey
put the instVar-name into the text-copy-buffer

o  doInspect: basicBooleanOrSymbolForHow
user selected the inspect-menu entry

o  doInspect: objectToInspect basic: basic
user selected the basic-inspect-menu entry

o  doUpdate

o  monitor: anInstVarName
start a monitoring process, showing the given instVar
in regular time intervals.

o  selection
helper - return the value of the (single) selected entry.
Nil if nothing or multiple items are selected

o  showLast
user clicked on an instvar - show value in workspace

o  tryToSelectKeyNamed: aString
called from the debugger to try to select the previousöy selected
field (by name)

workspace protocol
o  modified: aBoolean

o  saveAs: file doAppend: doAppend



ST/X 7.1.0.0; WebServer 1.663 at exept.de:8081; Sun, 22 Jul 2018 12:36:45 GMT