The most important is not the example, the important is the concept. The 
file is loaded after the rendering of the component.
Another example:

TogglePanePage.class

public class TogglePanePage extends WebPage
{
    private static final long serialVersionUID = 1L;

    private MyPanel panel = null;
   
    public TogglePanePage(final PageParameters parameters)
    {
        super();
       
        panel = new MyPanel(this,"panel");
        panel.setOutputMarkupId(true);
       
        AjaxLink link = new AjaxLink(this, "link", new Model("link")){
            @Override
            public void onClick(AjaxRequestTarget target) {
               
                panel.get("mypanel2").setVisible(true);
               
                target.addComponent(panel);
               
            }
        };     
    }
}

TogglePanePage.html

<html>
    <body>
    <wicket:extend>
        <h1>Dialogs</h1>
        <div style="padding:20px">
 
            <h4>Inline Accordeon</h4>
                <div style="padding-left: 40px;">
                      <span wicket:id="panel"></span>
                      <a wicket:id="link">link</a>
                 </div>
           
        
        </div>
    </wicket:extend>
   </body>
</html>

MyPanel.java
public class MyPanel extends Panel {

    public MyPanel(MarkupContainer parent, String id) {
        super(parent, id);
       
        new MyPanel2(this, "mypanel2").setVisible(false);
       
    }

MyPanel.html
    <wicket:panel>
        <div wicket:id="mypanel2">test</div>
    </wicket:panel>


MyPanel2.java
public class MyPanel2 extends Panel {

    public MyPanel2(MarkupContainer parent, String id) {
        super(parent, id);
       
        add(HeaderContributor.forCss(this.getClass(), "mycss.css"));
       
    }
}


MyPanel2.html
    <wicket:panel>
        <script>alert("loaded")</script>
    </wicket:panel>


mycss.css
body
{
    background-color: red;
}

Thanks

> This doesn't really make sense. You can't create panel in the onClick 
> handler without placing it anywhere in page. You can either create the 
> panel in advance (and hide it) or create another component and replace 
> it by the new panel panel.
>
> -Matej
>
>
> Alberto Bueno wrote:
>   
>> Hello,
>>
>> I'm trying to load css files with ajax, but the problem is that the 
>> rendering of the components are executed before the loading of the css 
>> files.
>> This problem means that if I have to use styles in the component 
>> updated, these styles are not executed, because when the component is 
>> rendered,
>> the styles are not loaded yet.
>>
>> This is a very simple example where the css file doesn't work correctly:
>>
>> MyPage.java:
>>
>> public class MyPage extends WebPage
>> {
>>     private static final long serialVersionUID = 1L;
>>
>>     private Component panel = null;
>>    
>>     public MyPage(final PageParameters parameters)
>>     {
>>         super();
>>        
>>         panel = new Label(this,"panel","panel");
>>         panel.setOutputMarkupId(true);
>>        
>>         AjaxLink link = new AjaxLink(this, "link", new Model("link")){
>>             @Override
>>             public void onClick(AjaxRequestTarget target) {
>>                
>>                 panel = new MyPanel(TogglePanePage.this,"panel");
>>                 panel.setOutputMarkupId(true);
>>                    
>>                 panel.add(HeaderContributor.forCss(this.getClass(), 
>> "mycss.css"));
>>                 target.addComponent(panel);
>>                
>>             }
>>         };
>>       }
>> }
>>
>> MyPage.html
>> <html>
>>     <body>
>>         <h1>Dialogs</h1>
>>         <div style="padding:20px"> 
>>             <h4>Inline Accordeon</h4>
>>                 <div style="padding-left: 40px;">
>>                       <span wicket:id="panel"></span>
>>                       <a wicket:id="link">link</a>
>>                  </div> 
>>         </div>
>>    </body>
>> </html>
>>
>>
>>
>> MyPanel.java
>>
>> public class MyPanel extends Panel {
>>
>>     public MyPanel(MarkupContainer parent, String id) {
>>         super(parent, id);
>>     }
>>
>>     private static final long serialVersionUID = 1L;
>>
>> }
>>
>>
>> MyPanel.html
>> <html>
>>     <body>
>>     <wicket:panel>
>>         <script>alert("loaded")</script>
>>         <div class="test">test</div>
>>     </wicket:panel>
>>    </body>
>> </html>
>>
>>
>> mycss.css
>> body
>> {
>>     background-color: red;
>> }
>>
>> In the example, the javascript alert() is executed before the 
>> background-color has been changed. And the background-color would have 
>> to be changed before.
>>
>> I think this is not a correct behavior, because with javascript files 
>> work correcty. But javascript files call to the server to load the file 
>> and css files don't call to the server.
>>
>> Any suggestion?
>>
>> Thanks
>>
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys - and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>> _______________________________________________
>> Wicket-user mailing list
>> Wicket-user@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
>>     
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>   


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to