# HG changeset patch # User tz # Date 885826760 -3600 # Node ID 857d4289a2bdc995b0c3c6be718b9c27102da820 # Parent 05adf036c0ac7a7b3dd82e62808e35bcd0ef5c21 improved class name completion routine diff -r 05adf036c0ac -r 857d4289a2bd ResourceSelectionBrowser.st --- a/ResourceSelectionBrowser.st Mon Jan 26 13:53:41 1998 +0100 +++ b/ResourceSelectionBrowser.st Mon Jan 26 15:59:20 1998 +0100 @@ -12,7 +12,8 @@ SelectionBrowser subclass:#ResourceSelectionBrowser - instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceTypes' + instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceTypes + allClasses' classVariableNames:'' poolDictionaries:'' category:'Interface-Advanced-Tools' @@ -87,11 +88,11 @@ #'window:' #(#WindowSpec #'name:' 'Resource Browser' - #'layout:' #(#LayoutFrame 195 0 357 0 606 0 656 0) + #'layout:' #(#LayoutFrame 315 0 311 0 726 0 610 0) #'label:' 'Resource Browser' #'min:' #(#Point 400 300) #'max:' #(#Point 1152 864) - #'bounds:' #(#Rectangle 195 357 607 657) + #'bounds:' #(#Rectangle 315 311 727 611) #'usePreferredExtent:' false ) #'component:' @@ -147,6 +148,7 @@ #'miniScrollerHorizontal:' true #'dataList:' #listOfResources #'useIndex:' false + #'has3Dsepartors:' true #'doubleClickSelector:' #resourceDoubleClicked #'valueChangeSelector:' #resourceSelected #'verticalSpacing:' 1 @@ -154,7 +156,6 @@ #( #(#DataSetColumnSpec #'width:' 20 - #'height:' 24 #'printSelector:' #'iconOn:' #'canSelect:' false ) @@ -277,6 +278,7 @@ |clsName| resourceTypes isNil ifTrue: [resourceTypes := #(canvas menu image fileImage)]. clsName := self listOfClassesView list at: anIndex. + self valueOfClassName value: clsName. self class lastSelection: clsName. self listOfResources contents: ((Smalltalk at: clsName) @@ -304,12 +306,30 @@ postBuildWith:aBuilder |classSelection classSelectionBlock| - + allClasses := Smalltalk allClasses asArray. classSelection := self class lastSelection ? resourceClass ? #Object. - classSelectionBlock := [:cls| - self listOfClassesView selectFromListOfNames: - (((Smalltalk at: cls asSymbol ifAbsent: [Object])) - withAllSuperclasses reverse collect: [:cls| cls name asString])]. + classSelectionBlock := + [:clsPattern| + |foundClass classes| + ((foundClass := Smalltalk at: clsPattern asSymbol) isNil or: + [foundClass name ~= clsPattern]) + ifTrue: + [ + classes := allClasses select: [:cls| cls name size >= clsPattern size]. + 1 to: clsPattern size do: + [:i| + classes := classes select: [:cls| (cls name at: i) == (clsPattern at: i)]. + ]. + foundClass := classes at: 1 ifAbsent: [nil] + ]. + foundClass notNil + ifTrue: + [ + self listOfClassesView selectFromListOfNames: (foundClass + withAllSuperclasses reverse collect: [:cls| cls name asString]) + ]. + self valueOfClassName value: clsPattern + ]. classSelectionBlock value: classSelection. self valueOfClassName value: classSelection. self classNameInputField entryCompletionBlock: @@ -317,9 +337,7 @@ |what| what := Smalltalk classnameCompletion: value withoutSpaces. self classNameInputField contents:what first. - (what at:2) size ~~ 1 ifTrue:[ - Display beep - ]. + (what at:2) size ~~ 1 ifTrue:[Display beep]. classSelectionBlock value: self classNameInputField contents ]. ^super postBuildWith:aBuilder