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);
RE: Event handling and swapping panels
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
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
RE: Event handling and swapping panels
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
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
RE: Event handling and swapping panels
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
Re: Event handling and swapping panels
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
Re: Event handling and swapping panels
Unless you override the onEvent method for each panel (MyPanel1, MyPanel2 and MyPanel3) , only the first working panel will manage the event. one solution would be : public class Admin extends WebPage { @Override public void onEvent(IEvent? event) { super.onEvent(event); if (event.getPayload() instanceof MyPanelEvent) { MyPanelEvent yourEvent = (MyPanelEvent) event.getPayload(); showSelectedPanel(yourEvent.getTarget(), yourEvent); } else { // your code here } } private void showSelectedPanel(AjaxRequestTarget target, MyPanelEvent e) { Component replacement; switch (e.getType()) { case PANEL1: replacement = new MyPanel1(workingPanel); // break; case PANEL2: replacement = new MyPanel2(workingPanel); break; case PANEL3: replacement = new MyPanel3(workingPanel); break; default: replacement = Test333.this.workingPanel; break; } Admin.this.workingPanel.replaceWith(replacement); Admin.this.workingPanel = replacement; replacement.setOutputMarkupId(true); target.add(replacement); target.appendJavaScript(alert('Panel changed to: + e.getType() + ');); } public void init() { workingPanel = new PanelAAA(workingPanel); workingPanel.setOutputMarkupId(true); add(workingPanel); AjaxLink p1Link = new AjaxLink(p1Link) { @Override public void onClick(AjaxRequestTarget target) { log.debug(onClick); send(getPage(), Broadcast.BREADTH, new YourEvent(target, YourEvent.Type.PANEL1)); } }; p1Link.setOutputMarkupId(true); p1Link.setMarkupId(p1Link); add(p1Link); AjaxLink p2Link = new AjaxLink(p2Link) { @Override public void onClick(AjaxRequestTarget target) { log.debug(onClick); send(getPage(), Broadcast.BREADTH, new YourEvent(target, YourEvent.Type.PANEL2)); } }; p2Link.setOutputMarkupId(true); p2Link.setMarkupId(p2Link); add(p2Link); AjaxLink p3Link = new AjaxLink(p3Link) { @Override public void onClick(AjaxRequestTarget target) { log.debug(onClick); send(getPage(), Broadcast.BREADTH, new YourEvent(target, YourEvent.Type.PANEL3)); } }; p3Link.setOutputMarkupId(true); p3Link.setMarkupId(p3Link); add(p3Link); } } François Le 28 mars 2012 à 22:35, Jeffrey Schneller a écrit : 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
RE: Event handling and swapping panels
Thank you Igor and Francois!! This solved my problem and it is working perfectly now. -Original Message- From: Francois Meillet [mailto:qq...@gmail.com] Sent: Wednesday, March 28, 2012 4:45 PM To: users@wicket.apache.org Subject: Re: Event handling and swapping panels Unless you override the onEvent method for each panel (MyPanel1, MyPanel2 and MyPanel3) , only the first working panel will manage the event. one solution would be : public class Admin extends WebPage { @Override public void onEvent(IEvent? event) { super.onEvent(event); if (event.getPayload() instanceof MyPanelEvent) { MyPanelEvent yourEvent = (MyPanelEvent) event.getPayload(); showSelectedPanel(yourEvent.getTarget(), yourEvent); } else { // your code here } } private void showSelectedPanel(AjaxRequestTarget target, MyPanelEvent e) { Component replacement; switch (e.getType()) { case PANEL1: replacement = new MyPanel1(workingPanel); // break; case PANEL2: replacement = new MyPanel2(workingPanel); break; case PANEL3: replacement = new MyPanel3(workingPanel); break; default: replacement = Test333.this.workingPanel; break; } Admin.this.workingPanel.replaceWith(replacement); Admin.this.workingPanel = replacement; replacement.setOutputMarkupId(true); target.add(replacement); target.appendJavaScript(alert('Panel changed to: + e.getType() + ');); } public void init() { workingPanel = new PanelAAA(workingPanel); workingPanel.setOutputMarkupId(true); add(workingPanel); AjaxLink p1Link = new AjaxLink(p1Link) { @Override public void onClick(AjaxRequestTarget target) { log.debug(onClick); send(getPage(), Broadcast.BREADTH, new YourEvent(target, YourEvent.Type.PANEL1)); } }; p1Link.setOutputMarkupId(true); p1Link.setMarkupId(p1Link); add(p1Link); AjaxLink p2Link = new AjaxLink(p2Link) { @Override public void onClick(AjaxRequestTarget target) { log.debug(onClick); send(getPage(), Broadcast.BREADTH, new YourEvent(target, YourEvent.Type.PANEL2)); } }; p2Link.setOutputMarkupId(true); p2Link.setMarkupId(p2Link); add(p2Link); AjaxLink p3Link = new AjaxLink(p3Link) { @Override public void onClick(AjaxRequestTarget target) { log.debug(onClick); send(getPage(), Broadcast.BREADTH, new YourEvent(target, YourEvent.Type.PANEL3)); } }; p3Link.setOutputMarkupId(true); p3Link.setMarkupId(p3Link); add(p3Link); } } François Le 28 mars 2012 à 22:35, Jeffrey Schneller a écrit : 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