[Pharo-project] PluggableButtonMorph>>askBeforeChanging
As to me this is a good example of placing a decisive role into wrong place, bloating the morph's protocol. The 'askBeforeChanging' is used in #performAction which asks the model , if it wants to change: askBeforeChanging ifTrue: [model okToChange ifFalse: [^ self]]. But why doing that, isn't model unable to send #okToChange in its own action handling method? i.e. if button does: model perform: actionSelector where actionSelector == #foo, what prevents a model to implement this method as: foo self okToChange ifFalse: [ ^ self]. self doSomething. ? Or, even if model wants to do something without asking in one case, but with asking in another, what prevents it to implement: #doSomething and #doSomethingIfOkToDoIt and choose appropriate selector as action to a button(s)? Or, if we look at it from different angle. A button widget main role is to trigger some action. The action could be anything: from very simple one up to complex, composite one. And 'ask-before-change-then-do' is an example of composite action. So, let button just trigger that composite action. Why putting an action handling logic to the place where action having completely abstract meaning? -- Best regards, Igor Stasenko AKA sig.
participants (1)
-
Igor Stasenko