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:[email protected]] 
Sent: Wednesday, March 28, 2012 3:29 PM
To: [email protected]
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 
<[email protected]> 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:[email protected]]
> Sent: Wednesday, March 28, 2012 3:07 PM
> To: [email protected]
> 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 
> <[email protected]> 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: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to