ResourceSelectionBrowser.st
changeset 403 e713820cb346
parent 402 246e36541b1b
child 404 35982cf1482f
equal deleted inserted replaced
402:246e36541b1b 403:e713820cb346
     1 SelectionBrowser subclass:#ResourceSelectionBrowser
       
     2 	instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceSelector
       
     3 		resourceTypes'
       
     4 	classVariableNames:''
       
     5 	poolDictionaries:''
       
     6 	category:'Interface-Advanced-Tools'
       
     7 !
       
     8 
       
     9 
       
    10 !ResourceSelectionBrowser class methodsFor:'instance creation'!
       
    11 
       
    12 openOnSuperclass: aSuperclass class: aClass selector: aSelector resourceTypes: aResourceTypes
       
    13 
       
    14     ^self new openOnSuperclass: aSuperclass class: aClass selector: aSelector resourceTypes: aResourceTypes
       
    15 ! !
       
    16 
       
    17 !ResourceSelectionBrowser class methodsFor:'interface specs'!
       
    18 
       
    19 windowSpec
       
    20     "this window spec was automatically generated by the ST/X UIPainter"
       
    21 
       
    22     "do not manually edit this - the painter/builder may not be able to
       
    23      handle the specification if its corrupted."
       
    24 
       
    25     "
       
    26      UIPainter new openOnClass:ResourceBrowser andSelector:#windowSpec
       
    27      ResourceBrowser new openInterface:#windowSpec
       
    28     "
       
    29     "ResourceBrowser open"
       
    30 
       
    31     <resource: #canvas>
       
    32 
       
    33     ^
       
    34      
       
    35        #(#FullSpec
       
    36           #'window:' 
       
    37            #(#WindowSpec
       
    38               #'name:' 'Resource Browser'
       
    39               #'layout:' #(#LayoutFrame 541 0 280 0 940 0 579 0)
       
    40               #'label:' 'Resource Browser'
       
    41               #'min:' #(#Point 400 300)
       
    42               #'max:' #(#Point 1152 864)
       
    43               #'bounds:' #(#Rectangle 541 280 941 580)
       
    44               #'usePreferredExtent:' false
       
    45           )
       
    46           #'component:' 
       
    47            #(#SpecCollection
       
    48               #'collection:' 
       
    49                #(
       
    50                  #(#VariableHorizontalPanelSpec
       
    51                     #'name:' 'variableHorizontalPanel'
       
    52                     #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -40 1.0)
       
    53                     #'component:' 
       
    54                      #(#SpecCollection
       
    55                         #'collection:' 
       
    56                          #(
       
    57                            #(#ViewSpec
       
    58                               #'name:' 'view1'
       
    59                               #'component:' 
       
    60                                #(#SpecCollection
       
    61                                   #'collection:' 
       
    62                                    #(
       
    63                                      #(#SelectionInTreeViewSpec
       
    64                                         #'name:' 'listOfClassesView'
       
    65                                         #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
    66                                         #'model:' #selectionOfClass
       
    67                                         #'hasHorizontalScrollBar:' true
       
    68                                         #'hasVerticalScrollBar:' true
       
    69                                         #'miniScrollerHorizontal:' true
       
    70                                         #'showRoot:' false
       
    71                                         #'valueChangeSelector:' #'classSelected:'
       
    72                                         #'hierarchicalList:' #listOfClasses
       
    73                                     )
       
    74                                   )
       
    75                               )
       
    76                               #'level:' -1
       
    77                           )
       
    78                            #(#ViewSpec
       
    79                               #'name:' 'view2'
       
    80                               #'component:' 
       
    81                                #(#SpecCollection
       
    82                                   #'collection:' 
       
    83                                    #(
       
    84                                      #(#DataSetSpec
       
    85                                         #'name:' 'resourcesDataSetView'
       
    86                                         #'layout:' #(#LayoutFrame 2 0.0 0 0.0 2 1.0 -22 1.0)
       
    87                                         #'model:' #selectionOfResource
       
    88                                         #'hasHorizontalScrollBar:' true
       
    89                                         #'hasVerticalScrollBar:' true
       
    90                                         #'miniScrollerHorizontal:' true
       
    91                                         #'dataList:' #listOfResources
       
    92                                         #'useIndex:' false
       
    93                                         #'doubleClickSelector:' #resourceDoubleClicked
       
    94                                         #'valueChangeSelector:' #resourceSelected
       
    95                                         #'verticalSpacing:' 1
       
    96                                         #'columns:' 
       
    97                                          #(
       
    98                                            #(#DataSetColumnSpec
       
    99                                               #'width:' 20
       
   100                                               #'model:' #icon
       
   101                                               #'printSelector:' #'iconOn:'
       
   102                                               #'canSelect:' false
       
   103                                           )
       
   104                                            #(#DataSetColumnSpec
       
   105                                               #'label:' 'selector'
       
   106                                               #'model:' #selector
       
   107                                               #'canSelect:' false
       
   108                                           )
       
   109                                            #(#DataSetColumnSpec
       
   110                                               #'label:' 'resource'
       
   111                                               #'model:' #resourceType
       
   112                                               #'canSelect:' false
       
   113                                           )
       
   114                                         )
       
   115                                     )
       
   116                                      #(#InputFieldSpec
       
   117                                         #'name:' 'selectorInputField'
       
   118                                         #'layout:' #(#LayoutFrame 2 0.0 -22 1 2 1.0 0 1)
       
   119                                         #'model:' #valueOfSelector
       
   120                                     )
       
   121                                   )
       
   122                               )
       
   123                               #'level:' -1
       
   124                           )
       
   125                         )
       
   126                     )
       
   127                     #'handles:' #(#Any 0.5 1.0)
       
   128                 )
       
   129                  #(#HorizontalPanelViewSpec
       
   130                     #'name:' 'horizontalPanelView'
       
   131                     #'layout:' #(#LayoutFrame 0 0.0 -40 1 0 1.0 0 1.0)
       
   132                     #'component:' 
       
   133                      #(#SpecCollection
       
   134                         #'collection:' 
       
   135                          #(
       
   136                            #(#ActionButtonSpec
       
   137                               #'name:' 'actionButton2'
       
   138                               #'label:' 'Cancel'
       
   139                               #'model:' #cancel
       
   140                               #'extent:' #(#Point 99 22)
       
   141                           )
       
   142                            #(#ActionButtonSpec
       
   143                               #'name:' 'actionButton1'
       
   144                               #'label:' 'OK'
       
   145                               #'model:' #accept
       
   146                               #'extent:' #(#Point 99 22)
       
   147                           )
       
   148                         )
       
   149                     )
       
   150                     #'level:' 1
       
   151                     #'horizontalLayout:' #center
       
   152                     #'verticalLayout:' #center
       
   153                     #'horizontalSpace:' 3
       
   154                     #'verticalSpace:' 3
       
   155                 )
       
   156               )
       
   157           )
       
   158       )
       
   159 ! !
       
   160 
       
   161 !ResourceSelectionBrowser methodsFor:'actions'!
       
   162 
       
   163 classSelected
       
   164     |a|
       
   165     self selectionOfClass value isNil ifTrue: [^nil].
       
   166     self listOfResources contents:
       
   167     (a := (Smalltalk at: self selectionOfClass value name ) class methodDictionary
       
   168 asOrderedCollection select: [:m| m resources notNil]).
       
   169      
       
   170 !
       
   171 
       
   172 classSelected: anIndex
       
   173     
       
   174     self selectionOfClass value isNil ifTrue: [^nil].
       
   175     self withWaitCursorDo:
       
   176     [
       
   177         |clsName|
       
   178         clsName := ((builder componentAt: #listOfClassesView) list at: anIndex).
       
   179         self class lastSelection: clsName.
       
   180         self listOfResources contents:
       
   181         ((Smalltalk at: clsName) 
       
   182         class methodDictionary
       
   183         asOrderedCollection select: 
       
   184         [:m| m resources notNil and: [resourceTypes includes: m resourceType]]).
       
   185     ]
       
   186 !
       
   187 
       
   188 closeCancel
       
   189 
       
   190     resourceMethod := nil.
       
   191     super closeCancel
       
   192 !
       
   193 
       
   194 resourceDoubleClicked
       
   195 
       
   196     resourceMethod := self selectionOfResource value.
       
   197     accept value: true.
       
   198     self close
       
   199 !
       
   200 
       
   201 resourceSelected
       
   202 
       
   203     resourceMethod := self selectionOfResource value.
       
   204     self valueOfSelector value: self selectionOfResource value selector
       
   205 ! !
       
   206 
       
   207 !ResourceSelectionBrowser methodsFor:'aspects'!
       
   208 
       
   209 listOfClasses
       
   210 
       
   211     |holder|
       
   212     (holder := builder bindingAt:#listOfClasses) isNil ifTrue:[
       
   213         builder aspectAt:#listOfClasses put:(holder := TreeItem newAsTreeFromSmalltalkClass: 
       
   214         (Smalltalk at: resourceSuperclass)).
       
   215     ].
       
   216     ^ holder
       
   217 
       
   218 
       
   219 !
       
   220 
       
   221 listOfResources
       
   222     "automatically generated by UIPainter ..."
       
   223 
       
   224     "*** the code below creates a default model when invoked."
       
   225     "*** (which may not be the one you wanted)"
       
   226     "*** Please change as required and accept in the browser."
       
   227 
       
   228     |holder|
       
   229 
       
   230     (holder := builder bindingAt:#listOfResources) isNil ifTrue:[
       
   231         builder aspectAt:#listOfResources put:(holder :=  List new).
       
   232     ].
       
   233     ^ holder
       
   234 !
       
   235 
       
   236 selectionOfClass
       
   237 
       
   238     |holder|
       
   239 
       
   240     (holder := builder bindingAt:#selectionOfClass) isNil ifTrue:[
       
   241         builder aspectAt:#selectionOfClass put:(holder :=  ValueHolder new).
       
   242     ].
       
   243     ^ holder
       
   244 !
       
   245 
       
   246 selectionOfResource
       
   247 
       
   248     |holder|
       
   249 
       
   250     (holder := builder bindingAt:#selectionOfResource) isNil ifTrue:[
       
   251         builder aspectAt:#selectionOfResource put:(holder :=  ValueHolder new).
       
   252     ].
       
   253     ^ holder
       
   254 !
       
   255 
       
   256 valueOfSelector
       
   257     "automatically generated by UIPainter ..."
       
   258 
       
   259     "*** the code below creates a default model when invoked."
       
   260     "*** (which may not be the one you wanted)"
       
   261     "*** Please change as required and accept in the browser."
       
   262 
       
   263     |holder|
       
   264 
       
   265     (holder := builder bindingAt:#valueOfSelector) isNil ifTrue:[
       
   266         builder aspectAt:#valueOfSelector put:(holder :=  ValueHolder new).
       
   267     ].
       
   268     ^ holder
       
   269 ! !
       
   270 
       
   271 !ResourceSelectionBrowser methodsFor:'initialization'!
       
   272 
       
   273 postBuildWith:aBuilder
       
   274 
       
   275     resourceClass notNil ifTrue:
       
   276     [(builder componentAt: #listOfClassesView) selectFromListOfNames: 
       
   277         (((Smalltalk at: self class lastSelection ? resourceClass ifAbsent: [Object])) withAllSuperclasses reverse collect: [:cls| cls name asString])].
       
   278     ^super postBuildWith:aBuilder
       
   279 
       
   280 ! !
       
   281 
       
   282 !ResourceSelectionBrowser methodsFor:'instance creation'!
       
   283 
       
   284 openOnSuperclass: aSuperclass class: aClass selector: aSelector resourceTypes: aResourceTypes
       
   285 
       
   286     resourceTypes := aResourceTypes.
       
   287     resourceSuperclass := aSuperclass.
       
   288     resourceClass := aClass.
       
   289     resourceSelector := aSelector.
       
   290 
       
   291     self open.
       
   292     accept value
       
   293     ifTrue:
       
   294     [
       
   295         ^self selectionOfClass value name, ' ', self valueOfSelector value
       
   296     ].
       
   297     ^nil
       
   298 ! !
       
   299 
       
   300 !ResourceSelectionBrowser class methodsFor:'documentation'!
       
   301 
       
   302 version
       
   303     ^ '$Header$'
       
   304 ! !