You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Marco Springer <ma...@gmail.com> on 2012/01/16 17:20:09 UTC

WiQuery & disabling tabs

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

Re: WiQuery & disabling tabs

Posted by Marco Springer <ma...@gmail.com>.
Ah ofcourse! Tnx.

On 17 January 2012 09:19, Martin Grigorov <mg...@apache.org> wrote:

> On Tue, Jan 17, 2012 at 9:15 AM, Marco Springer <ma...@gmail.com>
> wrote:
> > 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());
> Move this line inside the "if". No need to render empty JS.
>
>
> >  }
> > });
> >
> > 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 <ma...@gmail.com>
> 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
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Re: WiQuery & disabling tabs

Posted by Martin Grigorov <mg...@apache.org>.
On Tue, Jan 17, 2012 at 9:15 AM, Marco Springer <ma...@gmail.com> wrote:
> 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());
Move this line inside the "if". No need to render empty JS.


>  }
> });
>
> 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 <ma...@gmail.com> 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



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: WiQuery & disabling tabs

Posted by Marco Springer <ma...@gmail.com>.
Your suggestion:
if (((IModel<Wafer>) getDefaultModel()).getObject().getId() == 0) {
  ArrayItemOptions<IntegerItemOptions> options = new
ArrayItemOptions<IntegerItemOptions>();
  for (int i = 1; i < 6; i++) {
    options.add(new IntegerItemOptions(i));
  }

  tabs.setDisabled(options);
}

My code sauce:
if (((IModel<Wafer>) getDefaultModel()).getObject().getId() == 0) {
  tabs.add(new AbstractBehavior() {

    @Override
    public void renderHead(IHeaderResponse response) {
      super.renderHead(response);
      StringBuilder js = new StringBuilder();

      for (int i = 1; i < 6; i++) {
        js.append(tabs.disable(i).getStatement()).append(";");
      }

      response.renderOnDomReadyJavascript(js.toString());
    }
  });
}

Yup I'm going for your suggestion.

Thanks Hielke.

Regards,
Marco

On 17 January 2012 15:05, Hielke Hoeve <Hi...@topicus.nl> wrote:
>
> Yes I (and perhaps we) care. Unfortunately Google has decided that the WiQuery google group should die, leaving us with no mailinglist... Fortunately most of the WiQuery committers are also on this mailinglist.
> Any suggestions you have will be taken into account during our ever lasting upgrade efforts for WiQuery.
>
> Simply calling tab.disable(i); will not work as this function returns a jQuery statement. If you do not use that nothing changes :S You should use Tabs#setDisabled(ArrayItemOptions<IntegerItemOptions> disabled). This will disable all tabs that you specify upon first render. If you want to disable any tab after first render you should use an ajax call and call Tabs#disable(AjaxRequestTarget, int).
>
> If there is a bug in WiQuery then please report it here: http://code.google.com/p/wiquery/issues/entry
>
> Hielke Hoeve
>
> -----Original Message-----
> From: Marco Springer [mailto:marcospringer@gmail.com]
> Sent: dinsdag 17 januari 2012 9:16
> To: users@wicket.apache.org
> Subject: Re: WiQuery & disabling tabs
>
> 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 <ma...@gmail.com> 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

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


RE: WiQuery & disabling tabs

Posted by Hielke Hoeve <Hi...@topicus.nl>.
Yes I (and perhaps we) care. Unfortunately Google has decided that the WiQuery google group should die, leaving us with no mailinglist... Fortunately most of the WiQuery committers are also on this mailinglist.
Any suggestions you have will be taken into account during our ever lasting upgrade efforts for WiQuery.

Simply calling tab.disable(i); will not work as this function returns a jQuery statement. If you do not use that nothing changes :S You should use Tabs#setDisabled(ArrayItemOptions<IntegerItemOptions> disabled). This will disable all tabs that you specify upon first render. If you want to disable any tab after first render you should use an ajax call and call Tabs#disable(AjaxRequestTarget, int).

If there is a bug in WiQuery then please report it here: http://code.google.com/p/wiquery/issues/entry

Hielke Hoeve

-----Original Message-----
From: Marco Springer [mailto:marcospringer@gmail.com] 
Sent: dinsdag 17 januari 2012 9:16
To: users@wicket.apache.org
Subject: Re: WiQuery & disabling tabs

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 <ma...@gmail.com> 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

Re: WiQuery & disabling tabs

Posted by Marco Springer <ma...@gmail.com>.
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 <ma...@gmail.com> 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