Tools__ObjectModuleInformation.st
changeset 2181 93db2a1edbe6
child 2183 517b70cb2de7
equal deleted inserted replaced
2180:0912680e1fa7 2181:93db2a1edbe6
       
     1 "{ Package: 'stx:libtool2' }"
       
     2 
       
     3 "{ NameSpace: Tools }"
       
     4 
       
     5 ApplicationModel subclass:#ObjectModuleInformation
       
     6 	instanceVariableNames:'listOfModuleNames selectedModuleIndexHolder allModules'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'Monitors-ST/X'
       
    10 !
       
    11 
       
    12 Object subclass:#InfoRow
       
    13 	instanceVariableNames:'name version date'
       
    14 	classVariableNames:''
       
    15 	poolDictionaries:''
       
    16 	privateIn:ObjectModuleInformation
       
    17 !
       
    18 
       
    19 !ObjectModuleInformation class methodsFor:'documentation'!
       
    20 
       
    21 documentation
       
    22 "
       
    23     Shows the modules (dll's) of ST/X.
       
    24     Both builtIn modules, and dynamically loaded modules are listed.
       
    25 
       
    26     [author:]
       
    27         cg
       
    28 "
       
    29 !
       
    30 
       
    31 examples
       
    32 "
       
    33   Starting the application:
       
    34                                                                 [exBegin]
       
    35     ObjectModuleInformation open
       
    36 
       
    37                                                                 [exEnd]
       
    38 "
       
    39 ! !
       
    40 
       
    41 !ObjectModuleInformation class methodsFor:'info'!
       
    42 
       
    43 defaultLabel
       
    44     ^ 'Process Monitor'
       
    45 
       
    46     "Created: / 05-10-2007 / 11:56:59 / cg"
       
    47 ! !
       
    48 
       
    49 !ObjectModuleInformation class methodsFor:'interface specs'!
       
    50 
       
    51 windowSpec
       
    52     "This resource specification was automatically generated
       
    53      by the UIPainter of ST/X."
       
    54 
       
    55     "Do not manually edit this!! If it is corrupted,
       
    56      the UIPainter may not be able to read the specification."
       
    57 
       
    58     "
       
    59      UIPainter new openOnClass:ObjectModuleInformation andSelector:#windowSpec
       
    60      ObjectModuleInformation new openInterface:#windowSpec
       
    61      ObjectModuleInformation open
       
    62     "
       
    63 
       
    64     <resource: #canvas>
       
    65 
       
    66     ^ 
       
    67      #(FullSpec
       
    68         name: windowSpec
       
    69         window: 
       
    70        (WindowSpec
       
    71           label: 'ST/X Module & Version Information'
       
    72           name: 'ST/X Module & Version Information'
       
    73           min: (Point 0 0)
       
    74           bounds: (Rectangle 0 0 505 567)
       
    75           menu: mainMenu
       
    76         )
       
    77         component: 
       
    78        (SpecCollection
       
    79           collection: (
       
    80            (MenuPanelSpec
       
    81               name: 'ToolBar1'
       
    82               layout: (LayoutFrame 0 0 0 0 0 1 30 0)
       
    83               menu: toolbarMenu
       
    84               textDefault: true
       
    85             )
       
    86            (VariableVerticalPanelSpec
       
    87               name: 'VariableVerticalPanel1'
       
    88               layout: (LayoutFrame 0 0 30 0 0 1 0 1)
       
    89               component: 
       
    90              (SpecCollection
       
    91                 collection: (
       
    92                  (SequenceViewSpec
       
    93                     name: 'List1'
       
    94                     model: selectedModuleIndexHolder
       
    95                     hasHorizontalScrollBar: true
       
    96                     hasVerticalScrollBar: true
       
    97                     useIndex: true
       
    98                     sequenceList: listOfModuleNames
       
    99                   )
       
   100                  (ViewSpec
       
   101                     name: 'Box1'
       
   102                     component: 
       
   103                    (SpecCollection
       
   104                       collection: (
       
   105                        (LabelSpec
       
   106                           name: 'Label1'
       
   107                           layout: (LayoutFrame 0 0 0 0 0 1 30 0)
       
   108                           translateLabel: true
       
   109                           labelChannel: middleLabelHolder
       
   110                           adjust: left
       
   111                         )
       
   112                        (DataSetSpec
       
   113                           name: 'Table1'
       
   114                           layout: (LayoutFrame 0 0 30 0 0 1 0 1)
       
   115                           model: selectedInfoIndexHolder
       
   116                           hasHorizontalScrollBar: true
       
   117                           hasVerticalScrollBar: true
       
   118                           dataList: infoTableListHolder
       
   119                           columnHolder: tableColumns
       
   120                           separatorOneDColor: (Color 66.999313344015 66.999313344015 66.999313344015)
       
   121                         )
       
   122                        )
       
   123                      
       
   124                     )
       
   125                   )
       
   126                  )
       
   127                
       
   128               )
       
   129               handles: (Any 0.35195530726257 1.0)
       
   130             )
       
   131            )
       
   132          
       
   133         )
       
   134       )
       
   135 ! !
       
   136 
       
   137 !ObjectModuleInformation class methodsFor:'menu specs'!
       
   138 
       
   139 mainMenu
       
   140     "This resource specification was automatically generated
       
   141      by the MenuEditor of ST/X."
       
   142 
       
   143     "Do not manually edit this!! If it is corrupted,
       
   144      the MenuEditor may not be able to read the specification."
       
   145 
       
   146     "
       
   147      MenuEditor new openOnClass:ObjectModuleInformation andSelector:#mainMenu
       
   148      (Menu new fromLiteralArrayEncoding:(ObjectModuleInformation mainMenu)) startUp
       
   149     "
       
   150 
       
   151     <resource: #menu>
       
   152 
       
   153     ^ 
       
   154      #(Menu
       
   155         (
       
   156          (MenuItem
       
   157             label: 'File'
       
   158             translateLabel: true
       
   159             submenu: 
       
   160            (Menu
       
   161               (
       
   162                (MenuItem
       
   163                   label: 'Exit'
       
   164                   itemValue: closeRequest
       
   165                   translateLabel: true
       
   166                 )
       
   167                )
       
   168               nil
       
   169               nil
       
   170             )
       
   171           )
       
   172          (MenuItem
       
   173             label: 'View'
       
   174             translateLabel: true
       
   175             submenu: 
       
   176            (Menu
       
   177               (
       
   178                (MenuItem
       
   179                   label: 'Builtin'
       
   180                   translateLabel: true
       
   181                   indication: showBuiltIn
       
   182                 )
       
   183                (MenuItem
       
   184                   label: 'Class Libraries'
       
   185                   translateLabel: true
       
   186                   indication: showClassLibs
       
   187                 )
       
   188                (MenuItem
       
   189                   label: 'Methods'
       
   190                   translateLabel: true
       
   191                   indication: showMethods
       
   192                 )
       
   193                (MenuItem
       
   194                   label: 'C-Objects'
       
   195                   translateLabel: true
       
   196                   indication: showCObjects
       
   197                 )
       
   198                (MenuItem
       
   199                   label: 'Others'
       
   200                   translateLabel: true
       
   201                   indication: showOthers
       
   202                 )
       
   203                )
       
   204               nil
       
   205               nil
       
   206             )
       
   207           )
       
   208          (MenuItem
       
   209             label: 'Module'
       
   210             translateLabel: true
       
   211             submenu: 
       
   212            (Menu
       
   213               (
       
   214                (MenuItem
       
   215                   label: 'Unload'
       
   216                   translateLabel: true
       
   217                 )
       
   218                )
       
   219               nil
       
   220               nil
       
   221             )
       
   222           )
       
   223          (MenuItem
       
   224             label: 'Help'
       
   225             translateLabel: true
       
   226             startGroup: conditionalRight
       
   227             submenu: 
       
   228            (Menu
       
   229               (
       
   230                (MenuItem
       
   231                   label: 'Documentation'
       
   232                   itemValue: openDocumentation
       
   233                   translateLabel: true
       
   234                 )
       
   235                (MenuItem
       
   236                   label: '-'
       
   237                 )
       
   238                (MenuItem
       
   239                   label: 'About this Application...'
       
   240                   itemValue: openAboutThisApplication
       
   241                   translateLabel: true
       
   242                 )
       
   243                )
       
   244               nil
       
   245               nil
       
   246             )
       
   247           )
       
   248          )
       
   249         nil
       
   250         nil
       
   251       )
       
   252 ! !
       
   253 
       
   254 !ObjectModuleInformation class methodsFor:'tableColumns specs'!
       
   255 
       
   256 tableColumns
       
   257     "This resource specification was automatically generated
       
   258      by the DataSetBuilder of ST/X."
       
   259 
       
   260     "Do not manually edit this!! If it is corrupted,
       
   261      the DataSetBuilder may not be able to read the specification."
       
   262 
       
   263     "
       
   264      DataSetBuilder new openOnClass:ObjectModuleInformation andSelector:#tableColumns
       
   265     "
       
   266 
       
   267     <resource: #tableColumns>
       
   268 
       
   269     ^#(
       
   270       (DataSetColumnSpec
       
   271          label: 'Name'
       
   272          activeHelpKey: ''
       
   273          labelButtonType: Button
       
   274          width: 0.5
       
   275          model: name
       
   276          canSelect: false
       
   277        )
       
   278       (DataSetColumnSpec
       
   279          label: 'Version'
       
   280          activeHelpKey: ''
       
   281          labelButtonType: Button
       
   282          model: version
       
   283          canSelect: false
       
   284        )
       
   285       (DataSetColumnSpec
       
   286          label: 'Date'
       
   287          activeHelpKey: ''
       
   288          labelButtonType: Button
       
   289          model: date
       
   290          canSelect: false
       
   291        )
       
   292       )
       
   293     
       
   294 ! !
       
   295 
       
   296 !ObjectModuleInformation methodsFor:'aspects'!
       
   297 
       
   298 infoTableListHolder
       
   299     ^ builder valueAspectFor:#'infoTableListHolder' initialValue:#()
       
   300 
       
   301     "Created: / 05-10-2007 / 11:07:50 / cg"
       
   302 !
       
   303 
       
   304 listOfModuleNames
       
   305     listOfModuleNames isNil ifTrue:[
       
   306         listOfModuleNames := List new.
       
   307     ].
       
   308     ^ listOfModuleNames.
       
   309 
       
   310     "Modified: / 05-10-2007 / 10:49:19 / cg"
       
   311 !
       
   312 
       
   313 middleLabelHolder
       
   314     ^ builder valueAspectFor:#'middleLabelHolder' initialValue:''
       
   315 
       
   316     "Created: / 05-10-2007 / 11:05:08 / cg"
       
   317 !
       
   318 
       
   319 selectedModuleIndexHolder
       
   320     selectedModuleIndexHolder isNil ifTrue:[
       
   321         selectedModuleIndexHolder := ValueHolder new.
       
   322         selectedModuleIndexHolder onChangeSend:#selectedModuleIndexChanged to:self.
       
   323     ].
       
   324     ^ selectedModuleIndexHolder.
       
   325 
       
   326     "Modified: / 05-10-2007 / 10:51:39 / cg"
       
   327 !
       
   328 
       
   329 showBuiltIn
       
   330     ^ builder valueAspectFor:#'showBuiltIn' initialValue:true
       
   331 
       
   332     "Modified: / 05-10-2007 / 10:35:20 / cg"
       
   333 !
       
   334 
       
   335 showCObjects
       
   336     ^ builder valueAspectFor:#'showCObjects' initialValue:true
       
   337 
       
   338     "Modified: / 05-10-2007 / 10:35:23 / cg"
       
   339 !
       
   340 
       
   341 showClassLibs
       
   342     ^ builder valueAspectFor:#'showClassLibs' initialValue:true
       
   343 
       
   344     "Modified: / 05-10-2007 / 10:35:27 / cg"
       
   345 !
       
   346 
       
   347 showMethods
       
   348     ^ builder valueAspectFor:#'showMethods' initialValue:true
       
   349 
       
   350     "Modified: / 05-10-2007 / 10:35:30 / cg"
       
   351 !
       
   352 
       
   353 showOthers
       
   354     ^ builder valueAspectFor:#'showOthers' initialValue:true
       
   355 
       
   356     "Modified: / 05-10-2007 / 10:35:32 / cg"
       
   357 ! !
       
   358 
       
   359 !ObjectModuleInformation methodsFor:'change & update'!
       
   360 
       
   361 selectedModuleIndexChanged
       
   362     |sel info|
       
   363 
       
   364     sel := self selectedModuleIndexHolder value.
       
   365 
       
   366     (self showClassLibs value or:[self showBuiltIn value]) ifTrue:[
       
   367         info := allModules at:sel ifAbsent:nil.
       
   368     ].
       
   369     info isNil ifTrue:[
       
   370         "/ selected a method, cObject or unknown
       
   371         self showInfoForNonClassLib:sel.
       
   372         ^ self.
       
   373     ].
       
   374     info == #VM ifTrue:[
       
   375         "/ selected the pseudo entry for the VM itself
       
   376         self showInfoForVM.
       
   377         ^ self.
       
   378     ].
       
   379     "/ selected a class-library package
       
   380     self showInfoForClassLib:info.
       
   381 
       
   382     "Modified: / 05-10-2007 / 11:02:05 / cg"
       
   383 !
       
   384 
       
   385 showInfoForClassLib:info
       
   386     "/ selected a package; fill bottom list with class-info
       
   387 
       
   388     |classNames|
       
   389 
       
   390     self middleLabelHolder value:'Contains Modules:'.
       
   391 
       
   392     classNames := info classNames asSortedCollection.
       
   393     classNames := classNames select:[:cName |
       
   394                     |cls|
       
   395 
       
   396                     cls := Smalltalk classNamed:cName.
       
   397                     cls isNil ifTrue:[
       
   398                         true "a removed class"
       
   399                     ] ifFalse:[
       
   400                         cls isPrivate not
       
   401                     ].
       
   402                   ].
       
   403 
       
   404     classNames := classNames collect:[:cName |
       
   405                     |cls entry rev listEntry revisionInfo|
       
   406 
       
   407                     listEntry := InfoRow new.
       
   408                     listEntry name:cName.
       
   409 
       
   410                     cls := Smalltalk classNamed:cName.
       
   411                     cls isNil ifTrue:[
       
   412                         listEntry version:'(class removed)'.
       
   413                     ] ifFalse:[
       
   414                         rev := cls binaryRevision.
       
   415                         rev notNil ifTrue:[
       
   416                             cls isLoaded ifFalse:[
       
   417                                 entry := '(stub for: ' , rev.
       
   418                             ] ifTrue:[
       
   419                                 entry :='(bin: ' , rev.
       
   420                             ].    
       
   421                             cls revision ~= rev ifTrue:[
       
   422                                 entry := entry , ' / src: ' , (cls revision printString)
       
   423                             ].
       
   424                             entry := entry , ')'.
       
   425                             listEntry version:entry
       
   426                         ] ifFalse:[
       
   427                            cls revision notNil ifTrue:[
       
   428                                 listEntry version:'(overloaded by: ' , cls revision , ')' 
       
   429                            ]
       
   430                         ].
       
   431                         revisionInfo := cls revisionInfo.
       
   432                         revisionInfo notNil ifTrue:[
       
   433                             listEntry date:(revisionInfo at:#date)
       
   434                         ].
       
   435                     ].
       
   436                     listEntry
       
   437                   ].
       
   438 
       
   439     self infoTableListHolder value:classNames.
       
   440 
       
   441     "Modified: / 05-10-2007 / 11:26:13 / cg"
       
   442 !
       
   443 
       
   444 showInfoForNonClassLib:sel
       
   445     "/ selected a method, cObject or unknown
       
   446 
       
   447     |objectHandles module fileName list entry|
       
   448 
       
   449     module := objectHandles at:sel.
       
   450     fileName := module pathName.
       
   451 
       
   452     module isMethodHandle ifTrue:[
       
   453         |method nm entry1 entry2 entry3|
       
   454 
       
   455         self middleLabelHolder value:'Contains Compiled Method:'.
       
   456 
       
   457         (method := module method) isNil ifTrue:[
       
   458             nm := '** removed **'.
       
   459         ] ifFalse:[
       
   460 "/            menu := PopUpMenu
       
   461 "/                        labels:#('Inspect' 'Browse')
       
   462 "/                        selectors:#(inspect browse).
       
   463 "/            menu actionAt:#inspect put:[ method inspect ].
       
   464 "/            menu actionAt:#browse put:[ |who|
       
   465 "/                                        who := method who.
       
   466 "/                                        UserPreferences systemBrowserClass
       
   467 "/                                            openInClass:(who methodClass) 
       
   468 "/                                            selector:(who methodSelector) 
       
   469 "/                                      ].
       
   470 "/            listView1 middleButtonMenu:menu.
       
   471 
       
   472             nm := (method whoString) asText emphasizeAllWith:(#color->Color blue).
       
   473         ].
       
   474         entry1 := InfoRow new.
       
   475         entry1 name:'compiled method'; version:nm.
       
   476 
       
   477         entry2 := InfoRow new.
       
   478         entry2 name:'path'; version:fileName.
       
   479 
       
   480         entry3 := InfoRow new.
       
   481         entry3 name:'address'; version:('(16r) ' , (method code address hexPrintString leftPaddedTo:8 with:$0)).
       
   482 
       
   483         self infoTableListHolder value:(Array with:entry1 with:entry2 with:entry3).
       
   484         ^ self.
       
   485     ].
       
   486 
       
   487     (module isFunctionObjectHandle 
       
   488     and:[module functions notEmpty]) ifTrue:[
       
   489         self middleLabelHolder value:'Contains Functions:'.
       
   490 
       
   491 "/        menu := PopUpMenu
       
   492 "/                    labels:#('Inspect')
       
   493 "/                    selectors:#(inspect).
       
   494 "/        menu actionAt:#inspect put:[ module functions inspect  ].
       
   495 "/        listView1 middleButtonMenu:menu.
       
   496 "/
       
   497         list := (module functions select:[:f | f notNil])
       
   498                         collect:[:f | |entry|
       
   499                                         entry := InfoRow new.
       
   500                                         entry name:(f name asText emphasizeAllWith:(#color->Color blue)).
       
   501                                         entry version:('address: (16r) ' , (f code address hexPrintString leftPaddedTo:8 with:$0)).
       
   502                                         entry
       
   503                                 ].
       
   504         self infoTableListHolder value:list.
       
   505         ^ self.
       
   506     ].
       
   507 
       
   508     entry := InfoRow new.
       
   509     entry name:'Unknown'.
       
   510     self infoTableListHolder value:(Array with:entry).
       
   511 
       
   512     "Modified: / 05-10-2007 / 11:51:38 / cg"
       
   513 !
       
   514 
       
   515 showInfoForVM
       
   516     "/ show file versions in lower view.
       
   517 
       
   518     |l|
       
   519 
       
   520     self middleLabelHolder value:'Contains Modules:'.
       
   521 
       
   522     l := (ObjectMemory getVMIdentificationStrings).
       
   523     l := l select:[:entry | entry includesString:'$Header'].
       
   524     l := l select:[:entry | entry includesString:',v'].
       
   525     l := l collect:[:entry |
       
   526         |i1 i2 file revision date listEntry|
       
   527 
       
   528         listEntry := InfoRow new.
       
   529 
       
   530         i1 := entry indexOfSubCollection:'librun'.
       
   531         i1 ~~ 0 ifTrue:[
       
   532             i2 := entry indexOfSubCollection:',v' startingAt:i1.
       
   533             i2 ~~ 0 ifTrue:[
       
   534                 file := entry copyFrom:i1+7 to:(i2-1).
       
   535                 listEntry name:file.
       
   536 
       
   537                 i1 := i2+3.
       
   538                 i2 := entry indexOfSeparatorStartingAt:i1.
       
   539                 revision := entry copyFrom:i1 to:(i2-1).
       
   540                 listEntry version:revision.
       
   541 
       
   542                 i1 := i2+1.
       
   543                 i2 := entry indexOfSeparatorStartingAt:i1.
       
   544                 date := entry copyFrom:i1 to:(i2-1).
       
   545                 listEntry date:date.
       
   546             ].
       
   547         ].
       
   548         listEntry.
       
   549     ].
       
   550     self infoTableListHolder value:l.
       
   551 
       
   552 "/    readOnly ifFalse:[
       
   553 "/        unloadButton disable.
       
   554 "/        unloadAndRemoveButton disable.
       
   555 "/    ]
       
   556 
       
   557     "Modified: / 05-10-2007 / 11:15:08 / cg"
       
   558 ! !
       
   559 
       
   560 !ObjectModuleInformation methodsFor:'initialization'!
       
   561 
       
   562 postBuildWith:aBuilder
       
   563     |canDoIt|
       
   564 
       
   565     super postBuildWith:aBuilder.
       
   566 
       
   567     canDoIt := ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles].
       
   568     self showBuiltIn value:canDoIt.
       
   569     self showCObjects value:canDoIt.
       
   570     self showClassLibs value:canDoIt.
       
   571     self showMethods value:canDoIt.
       
   572     self showOthers value:canDoIt.
       
   573 
       
   574     self updateModuleList
       
   575 
       
   576     "Created: / 05-10-2007 / 10:50:27 / cg"
       
   577 ! !
       
   578 
       
   579 !ObjectModuleInformation methodsFor:'menu actions'!
       
   580 
       
   581 openDocumentation
       
   582 
       
   583     "Modified: / 05-10-2007 / 11:56:07 / cg"
       
   584 ! !
       
   585 
       
   586 !ObjectModuleInformation methodsFor:'private'!
       
   587 
       
   588 updateModuleList
       
   589     |showClassLibs showBuiltIn showMethods showCObjects showOthers
       
   590      listOfModuleNames allObjects handles|
       
   591 
       
   592     showClassLibs := self showClassLibs value.
       
   593     showBuiltIn := self showBuiltIn value.
       
   594     showMethods := self showMethods value.
       
   595     showCObjects := self showCObjects value.
       
   596     showOthers := self showOthers value.
       
   597 
       
   598     listOfModuleNames := OrderedCollection new.
       
   599     handles := OrderedCollection new.
       
   600 
       
   601     allObjects := ObjectFileLoader loadedObjectHandles.
       
   602 
       
   603     (showClassLibs or:[showBuiltIn]) ifTrue:[
       
   604         |moduleNames|
       
   605 
       
   606         allModules := ObjectMemory binaryModuleInfo asOrderedCollection.
       
   607         (showBuiltIn and:[showClassLibs]) ifFalse:[
       
   608             allModules := allModules select:
       
   609                                         [:i |
       
   610                                             |wantToSee|
       
   611 
       
   612                                             wantToSee := i dynamic.
       
   613                                             showBuiltIn ifTrue:[
       
   614                                                 wantToSee := wantToSee not
       
   615                                             ].
       
   616                                             wantToSee
       
   617                                         ]
       
   618         ].
       
   619 
       
   620         "/ sorting by reverse id brings newest ones to the top (a side effect)
       
   621         allModules sort:[:a :b | (a id) > (b id)].
       
   622         moduleNames := allModules collect:[:entry | entry name].
       
   623         listOfModuleNames addAll:moduleNames.
       
   624         handles addAll:allModules.
       
   625     ].
       
   626 
       
   627     showMethods ifTrue:[
       
   628         |methodObjects methodNames|
       
   629 
       
   630         methodObjects := (allObjects select:[:h | h isMethodHandle]) asArray.
       
   631         methodNames := methodObjects collect:[:mH | mH method isNil ifTrue:[
       
   632                                                         'compiled method - removed' " , ' (in ' , mH pathName , ')' "
       
   633                                                     ] ifFalse:[
       
   634                                                         'compiled method ' , mH method whoString  " , ' (in ' , mH pathName , ')' "
       
   635                                                     ].
       
   636                                              ].
       
   637         listOfModuleNames addAll:methodNames.
       
   638         handles addAll:methodObjects.
       
   639     ].
       
   640 
       
   641     showCObjects ifTrue:[
       
   642         |cObjects cObjectNames|
       
   643 
       
   644         cObjects := (allObjects select:[:h | h isFunctionObjectHandle]) asArray.
       
   645         cObjectNames := cObjects collect:[:entry | entry pathName].
       
   646         listOfModuleNames addAll:cObjectNames.
       
   647         handles addAll:cObjects.
       
   648     ].
       
   649 
       
   650     showOthers ifTrue:[
       
   651         |otherObjects otherObjectNames|
       
   652 
       
   653         otherObjects := (allObjects select:[:h | (h isFunctionObjectHandle
       
   654                                                  or:[h isMethodHandle
       
   655                                                  or:[h isClassLibHandle]]) not]) asArray.
       
   656         otherObjectNames := otherObjects collect:[:entry | entry pathName].
       
   657         listOfModuleNames addAll:otherObjectNames.
       
   658         handles addAll:otherObjects.
       
   659     ].
       
   660 
       
   661     showBuiltIn ifTrue:[
       
   662         listOfModuleNames addFirst:'VM'.
       
   663         handles addFirst:#VM.
       
   664         allModules addFirst:#VM.
       
   665     ].
       
   666 
       
   667     self listOfModuleNames contents:listOfModuleNames.
       
   668 
       
   669 "/    readOnly ifFalse:[
       
   670 "/        unloadButton disable.
       
   671 "/        unloadAndRemoveButton disable.
       
   672 "/    ]
       
   673 
       
   674     "Created: / 05-10-2007 / 10:46:18 / cg"
       
   675 ! !
       
   676 
       
   677 !ObjectModuleInformation::InfoRow methodsFor:'accessing'!
       
   678 
       
   679 date
       
   680     ^ date
       
   681 !
       
   682 
       
   683 date:something
       
   684     date := something.
       
   685 !
       
   686 
       
   687 name
       
   688     ^ name
       
   689 !
       
   690 
       
   691 name:something
       
   692     name := something.
       
   693 !
       
   694 
       
   695 name:nameArg version:versionArg date:dateArg 
       
   696     name := nameArg.
       
   697     version := versionArg.
       
   698     date := dateArg.
       
   699 !
       
   700 
       
   701 version
       
   702     ^ version
       
   703 !
       
   704 
       
   705 version:something
       
   706     version := something.
       
   707 ! !
       
   708 
       
   709 !ObjectModuleInformation class methodsFor:'documentation'!
       
   710 
       
   711 version
       
   712     ^ '$Header$'
       
   713 ! !