Hi Vitor,

It has been a while that I really used Magritte, but basically the problem that 
you encounter is that the save is not called on MyObject, but on the component 
that is created from MyObject (in the method asComponent). The save method 
calls the save on the component, and in Magritte that is implemented, so 
without doing much it should perform the following code:

MAContainerComponent >> save
        self validate ifFalse: [ ^ self ].
        self commit; answer: self model

The validate calls the validation rules on the magritteDescription, the commit 
stores the changes the user made in the object, and answer allows the container 
to do further actions for the same event (as the button is actually created in 
the decoration, and not in the container itself).

So when you want to intercept the save method, you could use a block instead of 
a simple symbol:

MyObject new asComponent addValidatedForm : { [ :container |
        | myObject |
        “ do something you want to do before the save takes place “
        container save.
        myObject := container model.
        “ when it reaches here, the save was successful and you can send a 
message to myObject, i.e. “
        myObject save ] -> 'save'. #cancel -> 'cancel'}.

Another approach is to change the component that is created by overriding the 
componentClass of MyObject, and implementing the save in the new subclass you 
created.

Regards,
Diego

> On 29 Dec 2018, at 17:14, Vitor Medina Cruz <[email protected]> wrote:
> 
> Hello,
> 
> So:
> 
> MyObject new asComponent addValidatedForm
> 
> How do I define save callBack?
> 
> I tried:
> 
> MyObject new asComponent addValidatedForm : {#save -> 'save'. #cancel -> 
> 'cancel'}.
> 
> and defined save in both instance or class side of MyObject, but that didn't 
> work.
> 
> Regards,
> Vitor.
> 
>  
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>      Livre de vírus. www.avg.com 
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.
>  <x-msg://13/#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

Reply via email to