If anyone cares, I found "a" solution...
I'm guessing the previous solution isn't working because the statement is
probably output before the page is actually rendered.
Therefore i did the following:
tabs.add(new AbstractBehavior() {
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
StringBuilder js = new StringBuilder();
if (isNewObject) {
for (int i = 1; i < 6; i++) {
js.append(tabs.disable(i).getStatement()).append(";");
}
}
response.renderOnDomReadyJavascript(js.toString());
}
});
If anyone thinks this is faulty or has a better solution, I'd like to know!
Kind regards,
Marco
On 16 January 2012 17:20, Marco Springer <[email protected]> wrote:
> Hi all,
>
> *The problem: *
> tabs not disabled on first render.
>
> *The source:*
> I'm adding the "Tabs" class from WiQuery 1.2.4 like so:
>
> tabs = new Tabs("tabs");
> tabs.setOutputMarkupId(true);
>
> CompoundPropertyModel<Wafer> waferModel = new
> CompoundPropertyModel<Wafer>(getDefaultModel());
> tabs.add(new GeneralInfoPanel("general_info", waferModel));
> tabs.add(new MaterialSpecificationPanel("material_spec", waferModel));
> tabs.add(new LazyTabPanel("layers", waferModel, LayersFragment.class));
> tabs.add(new LazyTabPanel("batches", waferModel, BatchFragment.class));
> tabs.add(new LazyTabPanel("logbook", waferModel, LogbookFragment.class));
> tabs.add(new DocumentsPanel("documents", waferModel));
>
> *// isNewObject set to true when the Wafer object contained in the
> waferModel is a new Wafer.
> // When a new Wafer is show in this panel, disable the rest of the tabs
> for now:*
> if (isNewObject) {
> for (int i = 1; i < 6; i++)
> tabs.disable(i);
> }
>
> add(tabs);
>
>
> *The question:*
> I thought this would be a proper way to disable those tabs, apparently it
> isn't.
> If I call the disable function through ajax afterwards, like
> "disable(target, 1)", it's fine.
>
> Anyone an idea how you would disable a single (or multiple) tabs on the
> first initial render?
>
> Kind regards,
> Marco