yes, every panel has to have onevent. in this case the panel that has onevent is replaced by a panel that doesnt, so it no longer receives the event. what you should do is put the onevent in the page, not in the panel.
-igor On Wed, Mar 28, 2012 at 1:35 PM, Jeffrey Schneller <jeffrey.schnel...@envisa.com> wrote: > Only problem is that it is not working. The panels never update to the new > panels. I can see that the onEvent fires as the javascript alert is shown. > But the javascript is only shown the first time I click a link. After the > first click, all the links call their onClick method and send the event out > but the event is never picked up. Does every panel need to have its own > onEvent method to listen for the events. > > If so, I think the old method of handling ajax is going to be easier. > > > -----Original Message----- > From: Igor Vaynberg [mailto:igor.vaynb...@gmail.com] > Sent: Wednesday, March 28, 2012 3:49 PM > To: users@wicket.apache.org > Subject: Re: Event handling and swapping panels > > that is correct > > -igor > > On Wed, Mar 28, 2012 at 12:41 PM, Jeffrey Schneller > <jeffrey.schnel...@envisa.com> wrote: >> Here it is: >> >> >> public class Admin extends WebPage { >> >> private Component workingPanel; >> >> public Admin() { >> super(); >> init(); >> } >> >> @Override >> public void renderHead(IHeaderResponse response) { >> response.renderCSSReference("css/admin.css"); >> super.renderHead(response); >> } >> >> public void init() { >> workingPanel = new MyEmptyPanel("workingPanel") { >> @Override >> public void onEvent(IEvent<?> event) { >> if (event.getPayload() instanceof >> MyPanelEvent) { >> MyPanelEvent e = (MyPanelEvent) >> event.getPayload(); >> AjaxRequestTarget target = >> e.getTarget(); >> >> Component replacement; >> switch (e.getType()) { >> case MyPanelEvent.PANEL1: >> replacement = new >> MyPanel1(this.getId()); >> break; >> case MyPanelEvent.PANEL2: >> replacement = new >> MyPanel2(this.getId()); >> break; >> case MyPanelEvent.PANEL3: >> replacement = new >> MyPanel3(this.getId()); >> break; >> default: >> replacement = >> Admin.this.workingPanel; >> break; >> } >> >> >> Admin.this.workingPanel.replaceWith(replacement); // IS THIS RIGHT? >> Admin.this.workingPanel = >> replacement; // IS THIS RIGHT? >> this.setOutputMarkupId(true); >> target.add(this); >> >> target.appendJavaScript("alert('Panel changed to: " + e.getType() + >> "');"); // place-holder for future javascript to be called >> } >> super.onEvent(event); >> } >> }; >> workingPanel.setOutputMarkupId(true); >> add(workingPanel); >> >> AjaxLink p1Link = new AjaxLink("p1Link") { >> @Override >> public void onClick(AjaxRequestTarget target) { >> send(getPage(), Broadcast.BREADTH, new >> MyPanelEvent(target, MyPanelEvent.PANEL1)); >> } >> }; >> p1Link.setOutputMarkupId(true); >> p1Link.setMarkupId("p1Link"); >> add(p1Link); >> >> AjaxLink p2Link = new AjaxLink("p2Link") { >> @Override >> public void onClick(AjaxRequestTarget target) { >> send(getPage(), Broadcast.BREADTH, new >> MyPanelEvent(target, MyPanelEvent.PANEL2)); >> } >> }; >> p2Link.setOutputMarkupId(true); >> p2Link.setMarkupId("p2Link"); >> add(p2Link); >> >> AjaxLink p3Link = new AjaxLink("p3Link") { >> @Override >> public void onClick(AjaxRequestTarget target) { >> send(getPage(), Broadcast.BREADTH, new >> MyPanelEvent(target, MyPanelEvent.PANEL3)); >> } >> }; >> p3Link.setOutputMarkupId(true); >> p3Link.setMarkupId("p3Link"); >> add(p3Link); >> } >> } >> >> -----Original Message----- >> From: Igor Vaynberg [mailto:igor.vaynb...@gmail.com] >> Sent: Wednesday, March 28, 2012 3:29 PM >> To: users@wicket.apache.org >> Subject: Re: Event handling and swapping panels >> >> paste your entire panel/page class... >> >> -igor >> >> On Wed, Mar 28, 2012 at 12:15 PM, Jeffrey Schneller >> <jeffrey.schnel...@envisa.com> wrote: >>> Thanks. But what does OuterPanelClass refer to in my example? >>> >>> I don't think either of these are right: >>> >>> MyEmptyPanel.this.panel.replaceWith(replacement); >>> -or- >>> MyPage.this.panel.replaceWith(replacement); >>> >>> Or do I need to define workingPanel as a private member of my page class >>> and then have: >>> >>> MyPage.this.workingPanel.replaceWith(replacement); >>> MyPage.this.workingPanel = replacement; >>> >>> >>> >>> >>> >>> >>> -----Original Message----- >>> From: Igor Vaynberg [mailto:igor.vaynb...@gmail.com] >>> Sent: Wednesday, March 28, 2012 3:07 PM >>> To: users@wicket.apache.org >>> Subject: Re: Event handling and swapping panels >>> >>> OuterPanelClass.this.panel.replaceWith(replacement); >>> OuterPanelClass.this.panel=replacement; >>> >>> -igor >>> >>> On Wed, Mar 28, 2012 at 11:33 AM, Jeffrey Schneller >>> <jeffrey.schnel...@envisa.com> wrote: >>>> I want to swap panels using the event model in 1.5. This is very similar >>>> to the panel swapping code (wicket 1.4.x) found in the Apache Wicket >>>> Cookbook but uses the event model instead. The problem is I can't set the >>>> panel equal to its replacement, like you would in 1.4.x. This is found on >>>> the line marked ***** THIS IS NOT POSSIBLE *****. >>>> >>>> How would you go about doing this? Is it even possible? >>>> >>>> Component workingPanel = new MyEmptyPanel("workingPanel") { >>>> @Override >>>> public void onEvent(IEvent<?> event) { >>>> if >>>> (event.getPayload() instanceof MyPanelEvent) { >>>> >>>> MyPanelEvent e = (MyPanelEvent) event.getPayload(); >>>> >>>> Component >>>> replacement; >>>> >>>> switch >>>> (e.getType()) { >>>> >>>> case >>>> MyPanelEvent.PANEL1: >>>> >>>> replacement = new MyFirstPanel(this.getId()); >>>> >>>> break; >>>> default: >>>> >>>> replacement = this; >>>> >>>> break; >>>> } >>>> >>>> this.replaceWith(replacement); >>>> this. = replacement; >>>> // ****** THIS IS NOT POSSIBLE - HOW WOULD I DO THIS ******* >>>> >>>> this.setOutputMarkupId(true); >>>> AjaxRequestTarget >>>> target = e.getTarget(); >>>> target.add(this); >>>> } >>>> super.onEvent(event); >>>> } >>>> workingPanel.setOutputMarkupId(true); >>>> add(workingPanel); >>>> >>>> AjaxLink firsttab = new AjaxLink("firsttab") { >>>> @Override >>>> public void onClick(AjaxRequestTarget target) { >>>> send(getPage(), Broadcast.BREADTH, >>>> new MyPanelEvent (target, MyPanelEvent.PANEL1)); >>>> } >>>> }; >>>> firsttab.setOutputMarkupId(true); >>>> firsttab.setMarkupId("firsttab "); >>>> add(firsttab); >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org