ResourceSelectionBrowser.st
changeset 1978 c4334704dc58
parent 1920 9f246ba60c91
child 1986 5cb77205ce00
--- a/ResourceSelectionBrowser.st	Mon Feb 13 09:54:24 2006 +0100
+++ b/ResourceSelectionBrowser.st	Mon Feb 13 09:54:36 2006 +0100
@@ -69,28 +69,24 @@
 
 !ResourceSelectionBrowser class methodsFor:'instance creation'!
 
-request: aTitle onSuperclass: aSuperclass andClass: aClass andSelector: aSelector withResourceTypes: resourceTypes
-    "opens a ResourceSelectionBrowser 
-        with aTitle
-        on aSuperclassOrSymbol, 
-        and aClassOrSymbol, 
-        and aSelector,
-        with allowed aResourceTypes"
+request:aTitle onSuperclass:aSuperclass andClass:aClassOrClassName andSelector:aSelector withResourceTypes:resourceTypes
+    "opens a ResourceSelectionBrowser; return a Message-object or nil."
+
+    ^ (self new
+        title: aTitle)
+            openOnSuperclass:aSuperclass
+            andClass:aClassOrClassName
+            andSelector:aSelector
+            withResourceTypes:resourceTypes
+
     "
-    ResourceSelectionBrowser
+     ResourceSelectionBrowser
         request: 'Select a Resource Selector'
         onSuperclass: #ApplicationModel 
-        andClass: #MenuEditor 
+        andClassNamed: #MenuEditor 
         andSelector: #menuItemImage 
         withResourceTypes: #(image) 
     "
-
-    ^self new
-        title: aTitle;
-        openOnSuperclass: aSuperclass
-        andClass: aClass
-        andSelector: aSelector
-        withResourceTypes: resourceTypes
 ! !
 
 !ResourceSelectionBrowser class methodsFor:'callbacks-default'!
@@ -704,11 +700,10 @@
     |cls|
 
     resourceSuperclass notNil ifTrue:[
-        cls := Smalltalk at: resourceSuperclass.
+        cls := Smalltalk classNamed: resourceSuperclass.
     ].
     cls notNil ifTrue:[^ cls].
     ^ self class treeViewClassHierarchyContents
-
 !
 
 validateDoubleClick: aTreeItem
@@ -735,7 +730,7 @@
         ifFalse: [sel := self selectionOfClassCategories value].
 
     sel notNil ifTrue:[
-        resourceClass := sel name.
+        resourceClass := sel.
     ].
     self updateResourceMethodList.
 !
@@ -757,15 +752,15 @@
 
     foundClass notNil ifTrue: [           
         foundClass := foundClass autoload.
-        resourceClass := foundClass name.
+        resourceClass := foundClass.
 
         ClassPresentation = #'Class Hierarchy' ifTrue: [
             |searchArgs nonSuperclasses hierItem|
 
             false "foundClass isPrivate"
                 ifFalse: [searchArgs := foundClass withAllSuperclasses reverse]
-                ifTrue:  [searchArgs := foundClass owningClass withAllSuperclasses reverse. searchArgs add: foundClass]
-.                                  
+                ifTrue:  [searchArgs := foundClass owningClass withAllSuperclasses reverse. 
+                          searchArgs add: foundClass].                                  
             (nonSuperclasses := self treeViewClassHierarchyContents allSuperclasses) notNil 
                 ifTrue: [searchArgs := searchArgs reject: [:cls| nonSuperclasses includes: cls]].
 
@@ -809,13 +804,11 @@
 
     |class className item|
 
-    resourceClass notNil ifTrue:[
-        class := Smalltalk at:resourceClass asSymbol.
-    ].
-    class isNil ifTrue:[
+    (class := resourceClass) isNil ifTrue:[
         ClassPresentation = #'Class Hierarchy'
             ifTrue:  [item := self selectionOfClassHierarchy value ]
             ifFalse: [item := self selectionOfClassCategories value ].
+
         item notNil ifTrue:[
             className := item name.
             class := Smalltalk at:className asSymbol
@@ -848,37 +841,33 @@
 
 !ResourceSelectionBrowser methodsFor:'instance creation'!
 
-openOnSuperclass: aSuperclassOrSymbol andClass: aClassOrSymbol andSelector: aSelector withResourceTypes: aResourceTypes
-    "opens a ResourceSelectionBrowser on 
-        aSuperclassOrSymbol, 
-        and aClassOrSymbol, 
-        and aSelector,
-        with allowed aResourceTypes"
+openOnSuperclass: aSuperclassOrSymbol andClass:aClassOrClassName andSelector: aSelector withResourceTypes: aResourceTypes
+    "opens a ResourceSelectionBrowser; return a Message-object or nil"
 
-    |clsName clsNameString cls|
+    |selectedClass enteredClassName className cls|
 
     resourceMethod := aSelector.
     resourceTypes := aResourceTypes.
     resourceSuperclass := aSuperclassOrSymbol isClass ifTrue: [aSuperclassOrSymbol name] ifFalse: [aSuperclassOrSymbol].
     resourceClass := nil.
 
-    aClassOrSymbol isClass 
-        ifTrue: [cls := aClassOrSymbol. resourceClass := aClassOrSymbol name] 
-        ifFalse: [
-            aClassOrSymbol size > 0 ifTrue:[
-                (cls := Smalltalk at: aClassOrSymbol) notNil
-                ifTrue: [resourceClass := aClassOrSymbol]
+    aClassOrClassName notNil ifTrue:[
+        aClassOrClassName isClass ifTrue: [
+            cls := aClassOrClassName. 
+            resourceClass := aClassOrClassName
+        ] ifFalse: [
+            cls := Smalltalk classNamed: aClassOrClassName.
+            cls notNil ifTrue:[
+                resourceClass := cls
             ]
-        ].            
+        ]
+    ].            
     self valueOfResourceSelector value:(aSelector ? '').
-    cls notNil ifTrue:[
-        "/ TODO: update tree
-    ].
     self open.
 
-    (clsName := self selectionOfClassHierarchy value) isNil ifTrue:[
-        (clsName := self selectionOfClassCategories value) isNil ifTrue:[
-            (clsNameString := self valueOfClassName value) isNil ifTrue:[
+    (selectedClass := self selectionOfClassHierarchy value) isNil ifTrue:[
+        (selectedClass := self selectionOfClassCategories value) isNil ifTrue:[
+            (enteredClassName := self valueOfClassName value) isNil ifTrue:[
                 accept value ifTrue:[
                     self warn:'No valid class selected/entered'.
                 ].
@@ -887,13 +876,13 @@
         ]
     ].
 
-    clsNameString isNil ifTrue:[
-        clsNameString := clsName name upTo:Character space
+    className := enteredClassName.    
+    className isNil ifTrue:[
+        className := selectedClass name
     ].
-    clsNameString := clsNameString asSymbol.
-
-    ((Smalltalk at: clsNameString) isClass and:[accept value]) ifTrue:[            
-        ^ clsNameString, ' ', self valueOfResourceSelector value
+    cls := Smalltalk classNamed:className.
+    (cls isClass and:[accept value]) ifTrue:[            
+        ^ Method::MethodWhoInfo class:cls selector:(self valueOfResourceSelector value)
     ].
 
     accept value ifTrue:[
@@ -913,15 +902,15 @@
     |classSelection classNameInputField|
      
     allClasses := self treeViewClassHierarchyContents withAllSubclasses reject: [:cls| cls isPrivate].
-    classSelection :=  resourceClass. 
+    classSelection := resourceClass isNil ifTrue:[nil] ifFalse:[resourceClass name]. 
 
-    (classSelection isNil or:[Smalltalk at: classSelection]) isNil 
+    (classSelection isNil or:[ (Smalltalk classNamed: classSelection) isNil]) 
         ifTrue: [classSelection :=  self class lastSelection].
 "/    (classSelection isNil or:[Smalltalk at: classSelection]) isNil 
 "/        ifTrue: [classSelection :=  self treeViewContents].
 
     classSelectionBlock := [:clsPattern | self classSelectionUpdate:clsPattern].
-    self valueOfClassName value: classSelection.  
+    self valueOfClassName value:classSelection.  
 
     (classNameInputField := builder componentAt: #classNameInputField) 
         entryCompletionBlock: