To give you an idea, this is a simple trick we use in our current project. We have a default set of stylesheets, but we also have components that use additional stylesheets. These components can implement 'HeaderContributor' and provide additional stylesheets. The stylesheets are set in the page using a simple ListView component.

See code, hope it gives you an idea ;)

<head>
<link id="wicket-styles" rel="stylesheet" type="text/css" href="wehkamp.css" ></link>
...


public class MainPage extends HtmlPage
{
   /** default styles. */
   private static final List DEFAULT_STYLES = new ArrayList(1);
   static {
       DEFAULT_STYLES.add("wehkamp.css");
   }

   public MainPage()
   {
       add(new StylesListView("styles", new StylesModel()));
       ...

   private static final class StylesListView extends ListView
   {
       public StylesListView(String name, IModel model)
       {
           super(name, model);
       }

       protected void populateItem(ListItem listItem)
       {
           String style = (String)listItem.getModelObject();
           listItem.add(new AttributeModifier("href", new Model(style)));
       }

       protected void handleRender()
       {
           removeAll();
           super.handleRender();
       }
   }

private final class StylesModel extends Model
{
public Object getObject()
{
final List styles = new ArrayList();
styles.addAll(DEFAULT_STYLES);
MainPage.this.visitChildren(HeaderContributor.class, new IVisitor()
{
public Object component(final Component component)
{
styles.addAll(((HeaderContributor)component).getCSSStyleHrefs());
return CONTINUE_TRAVERSAL;
}
});
return styles;
}
}


public interface HeaderContributor
{
   List getCSSStyleHrefs();
}

Eelco



Juergen Donnerstag wrote:

Kamil,

yes there has been a discussion around it and we decided not to put it
into 1.0. The workarounds I can think of:

a) simply put the reference to *.js into the header section of your
page markup or inline it. You're component than doesn't know anything
about it, but would rely on it. I know that this approach is not super
elegant (javascript and component disconnected), but it is easy and it
works.

b) your component may have a <div id="wicket-myscript"> region
(actually a HtmlContainer), which you yourself
setVisible(true/false).The region may contain the inline javascript.

c) Eelco has designed some components in order to tests his ideas.
Sorry, but I forgot how exactly they work (please scan the mail
archiv). May be he provides an example to you

Juergen

On Mon, 7 Feb 2005 13:56:16 +0100, Kamil Rembalski <[EMAIL PROTECTED]> wrote:


Hi guys,

I am trying to create a popup calendar component, which involves
massive javascript. I remember a discussion about special markup
elements that would allow the components to render some parts of their
markup only once per page and in the given section. Was there any
progress on this since then? I can't think of any elegant workaround
and I can't do without it... This may quite an issue for some
components...

Cheers,
Kamil

-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop





-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop





------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ Wicket-develop mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/wicket-develop

Reply via email to