About Spec second interpretation loop between Adapter and specific back end
Hi Ben When igor integrated his textEditor with Spec we saw that the relation between a model and its adapter is not direct but via another interpretation. For example MorphicButtonAdapter class>> defaultSpec ^ {#PluggableButtonMorph. #color:. Color white. #on:getState:action:label:menu:. #model. #state. #action. #label. nil. #getEnabledSelector:. #enabled. #getMenuSelector:. #menu:. #hResizing:. #spaceFill. #vResizing:. #spaceFill. #borderWidth:. #(model borderWidth). #borderColor:. #(model borderColor). #askBeforeChanging:. #(model askBeforeChanging). #setBalloonText:. { #model . #help}. #dragEnabled:. #(model dragEnabled). #dropEnabled:. #(model dropEnabled). #eventHandler:. { #EventHandler. #on:send:to:. #keyStroke. #keyStroke:fromMorph:. #model }} We do not understand why it is needed. Because the adapter is specific to a platform and to a model so For example why do we have #borderWidth:. #(model borderWidth). while we could have MorphiButtonAdapter>>borderWitdh ^ self model borderWidth Having this extra interpretation loop - is costly - blur the API of the class (as a programmer I do not see the exact API) the cross navigation gets confused. - makes the code more complex to understand for example #eventHandler:. { #EventHandler. #on:send:to:. #keyStroke. #keyStroke:fromMorph:. #model }} In addition is not a kind of static meta description so we will always need interpretation. So I would really like to see if we can avoid this second interpretation. Stef
participants (1)
-
stepharo