On Wed, Apr 29, 2015 at 3:20 PM, Sven Meier <[email protected]> wrote: > If I understand you correctly, you're proposing the following: > > Button { > publiv void onSubmit() { > send(this, Broadcast.EXACT, new SubmitPayload()); > } > > public static class SubmitPayload { > } > } > > Correct? > IMHO this would be easier then: > > Button { > publiv void onSubmit() { > for (ClickListener listener : getBehaviors(ClickListener.class)) { > listener.onSubmit(); > } > } > > public static interface ClickListener { > public void onSubmit(); > } > } >
Agreed! This is better! > > But I don't like either of these solution. I agree with Andrew that this > does not belong into core, people can build this on top of wicket. > This is also what I said in my first comment in the ticket. But later I've started seeing sense it in. That's why I've asked for more opinions here. > > Perhaps you have something different in mind? > > Regards > Sven > > > > On 28.04.2015 22:30, Martin Grigorov wrote: > >> Hi Sven, >> >> Maybe I didn't understand your idea with the interfaces. >> wicket-core components should instantiate the payload and broadcast it. >> How something implemented by the application will be instantiated by >> Wicket? >> >> Martin Grigorov >> Wicket Training and Consulting >> https://twitter.com/mtgrigorov >> >> On Tue, Apr 28, 2015 at 2:56 PM, Martin Grigorov <[email protected]> >> wrote: >> >> Hi Sven, >>> >>> The only problem I see with the interfaces approach is that it won't be >>> easy to extend them with extra functionality in a minor release if this >>> is >>> ever needed. >>> >>> Martin Grigorov >>> Wicket Training and Consulting >>> https://twitter.com/mtgrigorov >>> >>> On Tue, Apr 28, 2015 at 12:47 PM, Sven Meier <[email protected]> wrote: >>> >>> Hi Martin, >>>> >>>> why not just define interfaces in Components, and allow behaviors to >>>> implement these? >>>> Not that I'm convinced of the usefulness of this feature :P. >>>> >>>> Regards >>>> Sven >>>> >>>> >>>> >>>> On 28.04.2015 11:23, Martin Grigorov wrote: >>>> >>>> Hi Sven, >>>>> >>>>> I imagine them as inner static classes in AbstractLink, Button and Form >>>>> classes. >>>>> AjaxRequestTarget will be an optional property for the event payload. >>>>> I.e. >>>>> AjaxButton will set it, Button will leave it null. >>>>> >>>>> Martin Grigorov >>>>> Wicket Training and Consulting >>>>> https://twitter.com/mtgrigorov >>>>> >>>>> On Tue, Apr 28, 2015 at 12:11 PM, Sven Meier <[email protected]> wrote: >>>>> >>>>> Hi, >>>>> >>>>>> how (where) will these events (=payloads?) be defined? >>>>>> >>>>>> Sven >>>>>> >>>>>> >>>>>> On 28.04.2015 08:29, Martin Grigorov wrote: >>>>>> >>>>>> Hi Dan, >>>>>> >>>>>>> On Mon, Apr 27, 2015 at 4:21 PM, Dan Haywood < >>>>>>> [email protected]> >>>>>>> wrote: >>>>>>> >>>>>>> Sounds a bit similar to Apache Isis' support for domain events >>>>>>> (albeit >>>>>>> >>>>>>> at a >>>>>>>> higher level of abstraction). >>>>>>>> >>>>>>>> we've found that feature very useful, so I would imagine there would >>>>>>>> be >>>>>>>> benefits from implementing this lower more general support in >>>>>>>> Wicket. >>>>>>>> >>>>>>>> Thanks for sharing your experience! >>>>>>>> >>>>>>>> You could also perhaps submit events for the validation >>>>>>> (allowing >>>>>>> >>>>>>> subscribers to veto changes). >>>>>>>> >>>>>>>> IMO there is no need to do this for validation. >>>>>>>> >>>>>>>> Currently when an IValidator is added to a FormComponent it is >>>>>>> automatically wrapped in a Behavior [1]. >>>>>>> So Wicket will use the typesafer IValidator#validate(IValidatable) >>>>>>> instead >>>>>>> of Behavior#onEvent(IEvent) >>>>>>> >>>>>>> >>>>>>> 1. >>>>>>> >>>>>>> >>>>>>> >>>>>>> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java#L515 >>>>>>> >>>>>>> >>>>>>> Cheers >>>>>>> >>>>>>> Dan >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 27 April 2015 at 13:13, Martin Grigorov <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> https://issues.apache.org/jira/browse/WICKET-5884 suggest an >>>>>>>>> interesting >>>>>>>>> feature: >>>>>>>>> >>>>>>>>> All links/buttons/forms to broadcast Wicket events to their >>>>>>>>> Behaviors >>>>>>>>> >>>>>>>>> about >>>>>>>>> >>>>>>>> the event. >>>>>>>> >>>>>>>>> I.e. a Link/Button will tell all its Behaviors that it has been >>>>>>>>> clicked, >>>>>>>>> >>>>>>>>> a >>>>>>>>> >>>>>>>> Form will tell that it has been submitted. >>>>>>>> >>>>>>>>> The broadcast would be with type EXACT so only the current >>>>>>>>> component >>>>>>>>> and >>>>>>>>> its behaviors will be notified via #onEvent(). >>>>>>>>> This way the application developer can reuse functionality that >>>>>>>>> should >>>>>>>>> be >>>>>>>>> executed for several links/submitters. >>>>>>>>> >>>>>>>>> While I see how this could be useful for some applications I also >>>>>>>>> see >>>>>>>>> >>>>>>>>> that >>>>>>>>> >>>>>>>> it will add to the processing time for all applications no matter >>>>>>>> >>>>>>>>> whether >>>>>>>>> they use the feature or not. >>>>>>>>> >>>>>>>>> Also I guess some user will ask for OnBeforeButtonSubmitEvent + >>>>>>>>> OnAfterButtonSubmitEvent (same for Link and Form) so the extra >>>>>>>>> processing >>>>>>>>> time be doubled. >>>>>>>>> >>>>>>>>> What do you think about the feature? >>>>>>>>> >>>>>>>>> Martin Grigorov >>>>>>>>> Wicket Training and Consulting >>>>>>>>> https://twitter.com/mtgrigorov >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >
