--- a/MenuEditor.st Sat Jan 17 00:25:04 1998 +0100
+++ b/MenuEditor.st Sat Jan 17 00:27:00 1998 +0100
@@ -1854,12 +1854,14 @@
!
openModalOnClass:aClass andSelector:aSelector
+
specClass := Association key:aClass value:aSelector.
super openInterfaceModal.
!
openOnClass:aClass andSelector:aSelector
+
specClass := Association key:aClass value:aSelector.
super openInterface.
self buildFrom:aClass andSelector:aSelector.
@@ -1964,29 +1966,26 @@
|cls resourceClass resourceSelector imageResourceMessage readStream|
- cls := self resolveName:(self specClass).
+ cls := self resolveName: self specClass.
cls isNil ifTrue:[
^ self information:'No valid class defined!!'.
].
- (aspects at:#retriever) value size > 0
- ifTrue: [resourceClass := (aspects at:#retriever) value]
- ifFalse: [resourceClass := cls].
(aspects at:#icon) value size > 0
ifTrue: [resourceSelector := (aspects at:#icon) value]
ifFalse: [resourceSelector := #stxIcon].
- imageResourceMessage := ImageEditor openModalOnClass: resourceClass andSelector: resourceSelector.
- readStream := imageResourceMessage readStream.
- resourceClass := (readStream upTo: $ ) asSymbol.
- resourceSelector := readStream upToEnd asSymbol.
- resourceClass size > 0 ifTrue: [(aspects at:#retriever) value: resourceClass].
- resourceSelector size > 0 ifTrue: [(aspects at:#icon) value: resourceSelector. self modifiedChannel value: true].
-
- (aspects at:#retriever) value = specClass
+ (aspects at:#retriever) value size > 0
+ ifTrue: [resourceClass := (aspects at:#retriever) value]
+ ifFalse: [resourceClass := cls withAllSuperclasses detect: [:cls| cls class implements: resourceSelector] ifNone: [cls]].
+
+ (imageResourceMessage := ImageEditor openModalOnClass: resourceClass andSelector: resourceSelector) notNil
ifTrue:
[
- (aspects at:#retriever) value: nil
+ readStream := imageResourceMessage readStream.
+ resourceClass := (readStream upTo: $ ) asSymbol.
+ resourceSelector := readStream upToEnd asSymbol.
+ resourceClass size > 0 ifTrue: [(aspects at:#retriever) value: resourceClass].
+ resourceSelector size > 0 ifTrue: [(aspects at:#icon) value: resourceSelector. self modifiedChannel value: true]
]
-
!
doFromClass