Not exactly.  Here's how I would implement your example

1.  You'd have three interfaces AjaxEventListener,
MyHomePageListener1, MyHomePageListener2.
2.  Then you'd have the panels that implement the interfaces.
3.  Then, in your home page, you'd do:

add(new AjaxLink<Integer>("counterInc1") {
  public void onClick( AjaxRequestTarget target ) {
    updateCounter();
    fire(MyHomePageListener1.class).event1Happened(target);
  }
} );
add(new AjaxLink<Integer>("counterInc2") {
  public void onClick(AjaxRequestTarget target ) {
    updateCounter();
    fire(MyHomePageListener2.class).event2Happened(target);
  }
} );
add(new AjaxLink<Integer>("counterInc3") {
  public void onClick(AjaxRequestTarget target ) {
    updateCounter();
    fire(AjaxEventListener.class).onAjaxEvent(target);
  }
} );

I wouldn't use "marker" interfaces.  I'd use real listener interfaces
with method names that reflect what the event is.  It makes the code
more readable.

On Wed, Aug 25, 2010 at 11:09 AM, jcgarciam <jcgarc...@gmail.com> wrote:
>
> Let see if this answer your question, in my example i have this Interface:
> [AjaxEventResponseListener] as root Event interface
>
> Then i have 2 more specifics interfaces named: [MyHomePageEvent1] and
> [MyHomePageEvent2]
>
> Now i have 2 panels component:
> 1->    CounterPanel extends Panel implements MyHomePageEvent1
> 2->    MessagePanel extends Panel implements MyHomePageEvent2
>
> And in finally in HomePage i added them and provide several link to test
> them:
>
> <code>
>
>               add(new AjaxLink<Integer>("counterInc1") {
> �...@override
> public void onClick(final AjaxRequestTarget target) {
> HomePage.this.updateCounter();
>  propagateAjaxEvent(MyHomePageEvent1.class, target);  //Only CounterPanel
> get Updated
> }
>  });
>  add(new AjaxLink<Integer>("counterInc2") {
> �...@override
> public void onClick(final AjaxRequestTarget target) {
> HomePage.this.updateCounter();
>  propagateAjaxEvent(MyHomePageEvent2.class, target); // Only MessagePanel
> get Updated
> }
>  });
>  add(new AjaxLink<Integer>("counterInc3") {
> �...@override
> public void onClick(final AjaxRequestTarget target) {
> HomePage.this.updateCounter();
>  propagateAjaxEvent(AjaxEventResponseListener.class, target); // Both Panel
> get Updated
> }
>  });
>
> </code>
>
> Are we on the same page?
>
> On Wed, Aug 25, 2010 at 12:00 PM, James Carman [via Apache Wicket] <
> ml-node+2338371-595955556-65...@n4.nabble.com<ml-node%2b2338371-595955556-65...@n4.nabble.com>
>> wrote:
>
>> What if you have different event types that happen on a page?
>>
>> On Wed, Aug 25, 2010 at 10:47 AM, jcgarciam <[hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=2338371&i=0>>
>> wrote:
>>
>> >
>> > James, taking Igor example why not providing simple marking interfaces in
>>
>> > the Core and then something like this in the Page implementation, (i was
>> > thinking of the Dynamic Proxy approach you mention, but i'm not seeing
>> why
>> > it would be needed here since all you want is to propagate the Component
>> > re-rendering into the current AjaxRequestTarget)
>> >
>> > i.e: Defining a root Event named: AjaxEventResponseListener
>> >
>> > then defining a simple method in base page:
>> >
>> >
>> > protected void propagateAjaxEvent(Class<? extends
>> AjaxEventResponseListener>
>> > listener, final AjaxRequestTarget target) {
>> >  getPage().visitChildren(listener,
>> > new IVisitor<Component>() {
>> > public Object component(Component component) {
>> >  target.addComponent(component);
>> > return CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
>> >  }
>> > });
>> > }
>> >
>> >
>> >
>> > On Wed, Aug 25, 2010 at 11:08 AM, James Carman [via Apache Wicket] <
>> > [hidden email] 
>> > <http://user/SendEmail.jtp?type=node&node=2338371&i=1><[hidden
>> email] <http://user/SendEmail.jtp?type=node&node=2338371&i=2>>
>> >> wrote:
>> >
>> >> There's an issue in trunk where they nail down the type parameter to
>> >> extend Component on the visitChildren() method.  If you're looking for
>> >> a listener interface, that's not possible, because Component is a
>> >> class and your listener interface can't extend that.  Why the
>> >> restriction?
>> >>
>> >> On Wed, Aug 25, 2010 at 9:35 AM, James Carman
>> >> <[hidden email] <http://user/SendEmail.jtp?type=node&node=2338298&i=0>>
>>
>> >> wrote:
>> >>
>> >> > So, submit a JIRA with a patch once you get it working.  It would be
>> >> > good to have this on the Page class so that it's portable (no
>> >> > casting).
>> >> >
>> >> > On Wed, Aug 25, 2010 at 9:12 AM, jcgarciam <[hidden email]<
>> http://user/SendEmail.jtp?type=node&node=2338298&i=1>>
>> >> wrote:
>> >> >>
>> >> >> Thanks for expressing your help on this, im already working on it
>> :-),
>> >> since
>> >> >> is not that hard to implement, but i would like to see this kind of
>> >> >> functionality in the core . :)
>> >> >>
>> >> >> On Wed, Aug 25, 2010 at 10:09 AM, James Carman [via Apache Wicket] <
>> >> >> [hidden email] 
>> >> >> <http://user/SendEmail.jtp?type=node&node=2338298&i=2><[hidden
>>
>> >> email] <http://user/SendEmail.jtp?type=node&node=2338298&i=3>>
>> >> >>> wrote:
>> >> >>
>> >> >>> Do you want an example of how it would work or are you confident in
>> >> >>> how to implement it yourself?
>> >> >>>
>> >> >>> On Wed, Aug 25, 2010 at 9:05 AM, jcgarciam <[hidden email]<
>> >> http://user/SendEmail.jtp?type=node&node=2338212&i=0>>
>> >> >>> wrote:
>> >> >>>
>> >> >>> >
>> >> >>> > Hi James, I like the idea of having a way of automatically
>> includes
>> >> >>> > components in the AjaxRequestTarget without the need to do it
>> >> explicitly
>> >> >>> > (target.add(..)), by using a Marking Interface and the Visitor, it
>>
>> >> really
>> >> >>>
>> >> >>> > would make things easier when you want to add a new component to
>> the
>> >> >>> current
>> >> >>> > Ajax Response.
>> >> >>> >
>> >> >>> > The idea of the DynamicProxy seems very promising and i thinks it
>> >> >>> something
>> >> >>> > way much better of having Pub/Sub event implementation.
>> >> >>> >
>> >> >>> > Just my +0.05 cents :)
>> >> >>> >
>> >> >>> > On Wed, Aug 25, 2010 at 9:11 AM, James Carman [via Apache Wicket]
>> <
>> >> >>> > [hidden email] <
>> http://user/SendEmail.jtp?type=node&node=2338212&i=1><[hidden
>> >>
>> >> >>> email] <http://user/SendEmail.jtp?type=node&node=2338212&i=2>>
>> >> >>> >> wrote:
>> >> >>> >
>> >> >>> >> What about if we modify this idea a bit?  What if we use dynamic
>> >> >>> >> proxies to make it more generic?  So, your onclick method would
>> look
>> >>
>> >> >>> >> like:
>> >> >>> >>
>> >> >>> >> public void onClick(AjaxRequestTarget target) {
>> >> >>> >>   fire(MyCustomEventListener.class).someAjaxEvent(target);
>> >> >>> >> }
>> >> >>> >>
>> >> >>> >> Then, the fire() method would return an object (a dynamic proxy)
>> >> that
>> >> >>> >> implements the MyCustomEventListener interface.  The method
>> >> >>> >> implementation would do the visitor thing by looking for all
>> >> >>> >> components implementing the MyCustomEventListener interface and
>> then
>> >>
>> >> >>> >> call the someAjaxEvent() method.
>> >> >>> >>
>> >> >>> >> On Wed, Aug 25, 2010 at 5:10 AM, vladimir.kovalyuk <[hidden
>> email]<
>> >> >>> http://user/SendEmail.jtp?type=node&node=2338119&i=0>>
>> >> >>> >> wrote:
>> >> >>> >>
>> >> >>> >> >
>> >> >>> >> > I don't like subscriptions implementation. Somewhen it becomes
>> >> >>> difficult
>> >> >>> >> to
>> >> >>> >> > realize when to add/remove observers. It depends on the order
>> of
>> >> >>> >> > instantiations. Visitor pattern seems to be much more reliable.
>>
>> >> >>> >> > --
>> >> >>> >> > View this message in context:
>> >> >>> >>
>> >> >>>
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t>>
>>
>> >> <
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t&by-user=t>>>
>>
>> >>
>> >> >>> <
>> >> >>>
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t&by-user=t>>
>>
>> >> <
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2337874.html?by-user=t&by-user=t&by-user=t&by-user=t>>>>
>>
>> >>
>> >> >>>
>> >> >>> >> > Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>> >> >>> >> >
>> >> >>> >> >
>> >> ---------------------------------------------------------------------
>> >> >>> >> > To unsubscribe, e-mail: [hidden email]<
>> >> >>> http://user/SendEmail.jtp?type=node&node=2338119&i=1>
>> >> >>> >> > For additional commands, e-mail: [hidden email]<
>> >> >>> http://user/SendEmail.jtp?type=node&node=2338119&i=2>
>> >> >>> >> >
>> >> >>> >> >
>> >> >>> >>
>> >> >>> >>
>> >> ---------------------------------------------------------------------
>> >> >>> >> To unsubscribe, e-mail: [hidden email]<
>> >> >>> http://user/SendEmail.jtp?type=node&node=2338119&i=3>
>> >> >>> >> For additional commands, e-mail: [hidden email]<
>> >> >>> http://user/SendEmail.jtp?type=node&node=2338119&i=4>
>> >> >>> >>
>> >> >>> >>
>> >> >>> >>
>> >> >>> >> ------------------------------
>> >> >>> >>  View message @
>> >> >>> >>
>> >> >>>
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t&by-user=t>>
>>
>> >> <
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338119.html?by-user=t&by-user=t&by-user=t>>>
>>
>> >>
>> >> >>> >> To unsubscribe from Apache Wicket, click here<
>> >> >>>
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t&by-user=t>>
>>
>> >> <
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t&by-user=t&by-user=t>>>>.
>>
>> >>
>> >> >>>
>> >> >>> >>
>> >> >>> >>
>> >> >>> >>
>> >> >>> >
>> >> >>> >
>> >> >>> > --
>> >> >>> > Sincerely,
>> >> >>> > JC (http://www.linkedin.com/in/jcgarciam)
>> >> >>> > Work smarter, not harder!.
>> >> >>> >
>> >> >>> > --
>> >> >>> > View this message in context:
>> >> >>>
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t&by-user=t>>
>>
>> >> <
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t&by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338205.html?by-user=t&by-user=t&by-user=t>>>
>>
>> >>
>> >> >>>
>> >> >>> > Sent from the Wicket - User mailing list archive at Nabble.com.
>> >> >>> >
>> >> >>>
>> >> >>>
>> ---------------------------------------------------------------------
>> >> >>> To unsubscribe, e-mail: [hidden email]<
>> >> http://user/SendEmail.jtp?type=node&node=2338212&i=3>
>> >> >>> For additional commands, e-mail: [hidden email]<
>> >> http://user/SendEmail.jtp?type=node&node=2338212&i=4>
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> ------------------------------
>> >> >>>  View message @
>> >> >>>
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338212.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338212.html?by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338212.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338212.html?by-user=t&by-user=t>>
>>
>> >> >>> To unsubscribe from Apache Wicket, click here<
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t&by-user=t>>>.
>>
>> >>
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Sincerely,
>> >> >> JC (http://www.linkedin.com/in/jcgarciam)
>> >> >> Work smarter, not harder!.
>> >> >>
>> >> >> --
>> >> >> View this message in context:
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338215.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338215.html?by-user=t>
>> <
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338215.html?by-user=t<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338215.html?by-user=t&by-user=t>>
>>
>> >> >> Sent from the Wicket - User mailing list archive at Nabble.com.
>> >> >>
>> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [hidden email]<
>> http://user/SendEmail.jtp?type=node&node=2338298&i=4>
>> >> For additional commands, e-mail: [hidden email]<
>> http://user/SendEmail.jtp?type=node&node=2338298&i=5>
>> >>
>> >>
>> >>
>> >> ------------------------------
>> >>  View message @
>> >>
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338298.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338298.html?by-user=t>
>> >> To unsubscribe from Apache Wicket, click here<
>> http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=&by-user=t>>.
>>
>> >>
>> >>
>> >>
>> >
>> >
>> > --
>> > Sincerely,
>> > JC (http://www.linkedin.com/in/jcgarciam)
>> > Work smarter, not harder!.
>> >
>> > --
>> > View this message in context:
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338354.html<http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338354.html?by-user=t>
>>
>> > Sent from the Wicket - User mailing list archive at Nabble.com.
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=2338371&i=3>
>> For additional commands, e-mail: [hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=2338371&i=4>
>>
>>
>>
>> ------------------------------
>>  View message @
>> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338371.html
>> To unsubscribe from Apache Wicket, click 
>> here<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp?tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=>.
>>
>>
>>
>
>
> --
> Sincerely,
> JC (http://www.linkedin.com/in/jcgarciam)
> Work smarter, not harder!.
>
> --
> View this message in context: 
> http://apache-wicket.1842946.n4.nabble.com/Best-practice-for-component-interaction-tp2336888p2338394.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to