MenuEditor.st
changeset 1641 7e63a11f3333
parent 1636 85ab98a850c8
child 1642 8119edd52cf8
--- a/MenuEditor.st	Tue Oct 29 22:28:13 2002 +0100
+++ b/MenuEditor.st	Wed Oct 30 14:45:45 2002 +0100
@@ -4443,7 +4443,7 @@
     rcv  selector:sel.
 
     iconAndLabelHolder value ifTrue:[ rcv labelText:'' ].
-  ^ rcv
+    ^ rcv
 !
 
 resourceRetriever:aResourceRetriever
@@ -4504,10 +4504,27 @@
 !
 
 doEditImage
-    |item|
+    |sel cls item|
 
     item := imageHolder value.
-    item ifNotNil:[ item doEdit ].
+    item notNil ifTrue:[ 
+        item doEdit 
+    ] ifFalse:[
+        (sel := selectorHolder value) isNil ifTrue:[
+            Dialog warn:'No selector is defined.'.
+        ] ifFalse:[
+            (cls := retrieverHolder value) isNil ifTrue:[
+                Dialog warn:'No resource retriever is defined.'.
+            ] ifFalse:[
+                cls := Smalltalk classNamed:cls.
+                cls isNil ifTrue:[
+                    Dialog warn:'No such resource retriever class.'.
+                ] ifFalse:[
+                    ImageEditor openOnClass:cls andSelector:sel
+                ]
+            ]
+        ]
+    ].
 ! !
 
 !MenuEditor::ResourceEditor methodsFor:'aspects'!
@@ -4563,7 +4580,7 @@
     imageHolder setValue:nil.
 
     imageList root fromClass:retriever.
-    self selectorChanged.
+    self updateImageHolder.
 
     (retriever notNil and:[imageList size ~~ 0]) ifTrue:[
         list := self retrieverList.
@@ -4576,31 +4593,7 @@
 !
 
 selectorChanged
-    |item selector line|
-
-    imageList isEmpty ifTrue:[^ self].
-
-    selector := selectorHolder value.
-    selector size == 0 ifTrue:[ ^ imageHolder value:nil ].
-
-    item     := nil.
-    selector := selector asSymbol.
-
-    imageList do:[:anItem| |sel|
-	sel := anItem selector.
-	selector == sel ifTrue:[
-	    ^ imageHolder value:anItem
-	].
-	item ifNil:[
-	    (sel startsWith:selector) ifTrue:[ item := anItem ]
-	]
-    ].
-    imageHolder value:nil.
-
-    item ifNotNil:[
-	line := imageList identityIndexOf:item.
-	imageViewer scrollToLine:line
-    ].
+    self updateImageHolder.
 !
 
 update:what with:aPara from:aModel
@@ -4614,11 +4607,40 @@
     aModel == selectorHolder  ifTrue:[ ^ self selectorChanged  ].
 
     aModel == imageHolder ifTrue:[
-	item := imageHolder value.
-	item ifNotNil:[ selectorHolder value:(item label) ].
-      ^ self
+        item := imageHolder value.
+        item ifNotNil:[ selectorHolder value:(item label) ].
+        ^ self
     ].
     super update:what with:aPara from:aModel
+!
+
+updateImageHolder
+    |item selector line|
+
+    imageList isEmpty ifTrue:[^ self].
+
+    selector := selectorHolder value.
+    selector size == 0 ifTrue:[ imageHolder value:nil. ^ self ].
+
+    item     := nil.
+    selector := selector asSymbol.
+
+    imageList do:[:anItem| |sel|
+        sel := anItem selector.
+        selector == sel ifTrue:[
+            imageHolder value:anItem.
+            ^ self
+        ].
+        item ifNil:[
+            (sel startsWith:selector) ifTrue:[ item := anItem ]
+        ]
+    ].
+    imageHolder value:nil.
+
+    item ifNotNil:[
+        line := imageList identityIndexOf:item.
+        imageViewer scrollToLine:line
+    ].
 ! !
 
 !MenuEditor::ResourceEditor methodsFor:'initialization'!