You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Arnaud Garcia <ar...@imagemed-87.com> on 2010/04/06 10:31:13 UTC

DataView, ReuseIfModelsEqualStrategy, Ajax

Hello,

I have a simple DataView where each row has some labels and textfields. Each
time the user enter in a textfield I would like to highlight the selected
row. (The idea is to adapt the wicket stuff example (OIRPage.java) with an
AjaxFormComponentUpdatingBehavior("onfocus") instead of a simple Link)


The example in wicket stuff
(
http://wicketstuff.org/wicket/repeater/?wicket:bookmarkablePage=:org.apache.wicket.examples.repeater.OIRPage
)

 shows how to highlight the selected row using ReuseIfModelsEqualStrategy
when the user click on a Link.

Using the AjaxFormComponentUpdatingBehavior with the "onfocus" event I try
to simulate the Link click but it does not work...

 myTextField.add(new AjaxFormComponentUpdatingBehavior("onfocus") {

                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {
                        HighlitableDataItem<EtudiantAS> hitem =
(HighlitableDataItem<EtudiantAS>) item;
                        hitem.toggleHighlite();
                       // target.addComponent( ??? don' know what to put
here, how to re-render the item)

                    }
                });


Well, any idea

thanks

Arnaud

Re: DataView, ReuseIfModelsEqualStrategy, Ajax

Posted by Daniela Valero <da...@gmail.com>.
Thanks  Jeremy, that info is very usefull

2010/4/6 Jeremy Thomerson <je...@wickettraining.com>

> No - I mean use jQuery, YUI, or whatever you are currently using (or custom
> JS that you write without one of these frameworks), and just add a CSS
> class
> to the dom element on the client-side.  There is no reason to make a
> roundtrip to the server to simply change the CSS class.  That wastes time
> and resources, and makes the app less responsive.
>
> Do something (jQuery code) like
> onfocus="$(this).parent().addClass('highlightedfield');" to get started,
> then onblur="$(this).parent().removeClass('highlightedfield');"
>
> --
> Jeremy Thomerson
> http://www.wickettraining.com
>
>
>
> On Tue, Apr 6, 2010 at 3:02 PM, Daniela Valero
> <da...@gmail.com>wrote:
>
> > Hi Jeremy, I'm doing something similar than Araun, but with
> >
> > item.add(new AjaxEventBehavior("onclick") {
> >        @Override
> >      protected void onEvent(AjaxRequestTarget target) {
> >          HighLitableDataItem<ThirdModelBasic> hitem =
> > (HighLitableDataItem<ThirdModelBasic>)item;
> >         hitem.toggleHighlite();
> >
> >        target.addComponent(item);
> >
> >                        }
> >                    });
> >
> >
> > But, when I click the item, it Highlites a few seconds, then turns back
> its
> > normal style.
> >
> > Is that because you suggest do not do it with ajax?
> > Is there a way to do this, without rendering all page?
> > When you said "JS library and attach to onfocus.". Do you reference
> > JSLibrarie inside wicketStuff trunk?
> >
> > 2010/4/6 Jeremy Thomerson <je...@wickettraining.com>
> >
> > > Don't do this with AJAX - that's overkill.  Just use a JS library and
> > > attach
> > > to onfocus.
> > >
> > > --
> > > Jeremy Thomerson
> > > http://www.wickettraining.com
> > >
> > >
> > >
> > > On Tue, Apr 6, 2010 at 1:21 PM, Arnaud Garcia <arnaud@imagemed-87.com
> > > >wrote:
> > >
> > > > ok, find, so just do:
> > > >    item.setOutputMarkupPlaceholderTag(true);
> > > > and
> > > >
> > > > myTextField.add(new AjaxEventBehavior("onfocus") {
> > > >
> > > >                    @Override
> > > >                    protected void onEvent(AjaxRequestTarget target)
> > > > {
> > > >                        item.add(new SimpleAttributeModifier("class",
> > > > "selected"));
> > > >                        target.addComponent(item);
> > > >                    }
> > > >                });
> > > >
> > > >
> > > > Arnaud
> > > > 2010/4/6 Arnaud Garcia <ar...@imagemed-87.com>
> > > >
> > > > > Hello,
> > > > >
> > > > > I have a simple DataView where each row has some labels and
> > textfields.
> > > > > Each time the user enter in a textfield I would like to highlight
> the
> > > > > selected row. (The idea is to adapt the wicket stuff example
> > > > (OIRPage.java)
> > > > > with an AjaxFormComponentUpdatingBehavior("onfocus") instead of a
> > > simple
> > > > > Link)
> > > > >
> > > > >
> > > > > The example in wicket stuff
> > > > > (
> > > > >
> > > >
> > >
> >
> http://wicketstuff.org/wicket/repeater/?wicket:bookmarkablePage=:org.apache.wicket.examples.repeater.OIRPage
> > > > > )
> > > > >
> > > > >  shows how to highlight the selected row using
> > > ReuseIfModelsEqualStrategy
> > > > > when the user click on a Link.
> > > > >
> > > > > Using the AjaxFormComponentUpdatingBehavior with the "onfocus"
> event
> > I
> > > > try
> > > > > to simulate the Link click but it does not work...
> > > > >
> > > > >  myTextField.add(new AjaxFormComponentUpdatingBehavior("onfocus") {
> > > > >
> > > > >                     @Override
> > > > >                     protected void onUpdate(AjaxRequestTarget
> target)
> > {
> > > > >                         HighlitableDataItem<EtudiantAS> hitem =
> > > > > (HighlitableDataItem<EtudiantAS>) item;
> > > > >                         hitem.toggleHighlite();
> > > > >                        // target.addComponent( ??? don' know what
> to
> > > put
> > > > > here, how to re-render the item)
> > > > >
> > > > >                     }
> > > > >                 });
> > > > >
> > > > >
> > > > > Well, any idea
> > > > >
> > > > > thanks
> > > > >
> > > > > Arnaud
> > > > >
> > > >
> > >
> >
> >
> >
> > --
> > | Daniela Valero
> >
> > "No hay vientos favorables para quien no sabe a donde quiere ir!
> >
>



-- 
| Daniela Valero

"No hay vientos favorables para quien no sabe a donde quiere ir!

Re: DataView, ReuseIfModelsEqualStrategy, Ajax

Posted by Jeremy Thomerson <je...@wickettraining.com>.
No - I mean use jQuery, YUI, or whatever you are currently using (or custom
JS that you write without one of these frameworks), and just add a CSS class
to the dom element on the client-side.  There is no reason to make a
roundtrip to the server to simply change the CSS class.  That wastes time
and resources, and makes the app less responsive.

Do something (jQuery code) like
onfocus="$(this).parent().addClass('highlightedfield');" to get started,
then onblur="$(this).parent().removeClass('highlightedfield');"

--
Jeremy Thomerson
http://www.wickettraining.com



On Tue, Apr 6, 2010 at 3:02 PM, Daniela Valero
<da...@gmail.com>wrote:

> Hi Jeremy, I'm doing something similar than Araun, but with
>
> item.add(new AjaxEventBehavior("onclick") {
>        @Override
>      protected void onEvent(AjaxRequestTarget target) {
>          HighLitableDataItem<ThirdModelBasic> hitem =
> (HighLitableDataItem<ThirdModelBasic>)item;
>         hitem.toggleHighlite();
>
>        target.addComponent(item);
>
>                        }
>                    });
>
>
> But, when I click the item, it Highlites a few seconds, then turns back its
> normal style.
>
> Is that because you suggest do not do it with ajax?
> Is there a way to do this, without rendering all page?
> When you said "JS library and attach to onfocus.". Do you reference
> JSLibrarie inside wicketStuff trunk?
>
> 2010/4/6 Jeremy Thomerson <je...@wickettraining.com>
>
> > Don't do this with AJAX - that's overkill.  Just use a JS library and
> > attach
> > to onfocus.
> >
> > --
> > Jeremy Thomerson
> > http://www.wickettraining.com
> >
> >
> >
> > On Tue, Apr 6, 2010 at 1:21 PM, Arnaud Garcia <arnaud@imagemed-87.com
> > >wrote:
> >
> > > ok, find, so just do:
> > >    item.setOutputMarkupPlaceholderTag(true);
> > > and
> > >
> > > myTextField.add(new AjaxEventBehavior("onfocus") {
> > >
> > >                    @Override
> > >                    protected void onEvent(AjaxRequestTarget target)
> > > {
> > >                        item.add(new SimpleAttributeModifier("class",
> > > "selected"));
> > >                        target.addComponent(item);
> > >                    }
> > >                });
> > >
> > >
> > > Arnaud
> > > 2010/4/6 Arnaud Garcia <ar...@imagemed-87.com>
> > >
> > > > Hello,
> > > >
> > > > I have a simple DataView where each row has some labels and
> textfields.
> > > > Each time the user enter in a textfield I would like to highlight the
> > > > selected row. (The idea is to adapt the wicket stuff example
> > > (OIRPage.java)
> > > > with an AjaxFormComponentUpdatingBehavior("onfocus") instead of a
> > simple
> > > > Link)
> > > >
> > > >
> > > > The example in wicket stuff
> > > > (
> > > >
> > >
> >
> http://wicketstuff.org/wicket/repeater/?wicket:bookmarkablePage=:org.apache.wicket.examples.repeater.OIRPage
> > > > )
> > > >
> > > >  shows how to highlight the selected row using
> > ReuseIfModelsEqualStrategy
> > > > when the user click on a Link.
> > > >
> > > > Using the AjaxFormComponentUpdatingBehavior with the "onfocus" event
> I
> > > try
> > > > to simulate the Link click but it does not work...
> > > >
> > > >  myTextField.add(new AjaxFormComponentUpdatingBehavior("onfocus") {
> > > >
> > > >                     @Override
> > > >                     protected void onUpdate(AjaxRequestTarget target)
> {
> > > >                         HighlitableDataItem<EtudiantAS> hitem =
> > > > (HighlitableDataItem<EtudiantAS>) item;
> > > >                         hitem.toggleHighlite();
> > > >                        // target.addComponent( ??? don' know what to
> > put
> > > > here, how to re-render the item)
> > > >
> > > >                     }
> > > >                 });
> > > >
> > > >
> > > > Well, any idea
> > > >
> > > > thanks
> > > >
> > > > Arnaud
> > > >
> > >
> >
>
>
>
> --
> | Daniela Valero
>
> "No hay vientos favorables para quien no sabe a donde quiere ir!
>

Re: DataView, ReuseIfModelsEqualStrategy, Ajax

Posted by Daniela Valero <da...@gmail.com>.
Hi Jeremy, I'm doing something similar than Araun, but with

item.add(new AjaxEventBehavior("onclick") {
       @Override
      protected void onEvent(AjaxRequestTarget target) {
         HighLitableDataItem<ThirdModelBasic> hitem =
(HighLitableDataItem<ThirdModelBasic>)item;
         hitem.toggleHighlite();

        target.addComponent(item);

                        }
                    });


But, when I click the item, it Highlites a few seconds, then turns back its
normal style.

Is that because you suggest do not do it with ajax?
Is there a way to do this, without rendering all page?
When you said "JS library and attach to onfocus.". Do you reference
JSLibrarie inside wicketStuff trunk?

2010/4/6 Jeremy Thomerson <je...@wickettraining.com>

> Don't do this with AJAX - that's overkill.  Just use a JS library and
> attach
> to onfocus.
>
> --
> Jeremy Thomerson
> http://www.wickettraining.com
>
>
>
> On Tue, Apr 6, 2010 at 1:21 PM, Arnaud Garcia <arnaud@imagemed-87.com
> >wrote:
>
> > ok, find, so just do:
> >    item.setOutputMarkupPlaceholderTag(true);
> > and
> >
> > myTextField.add(new AjaxEventBehavior("onfocus") {
> >
> >                    @Override
> >                    protected void onEvent(AjaxRequestTarget target)
> > {
> >                        item.add(new SimpleAttributeModifier("class",
> > "selected"));
> >                        target.addComponent(item);
> >                    }
> >                });
> >
> >
> > Arnaud
> > 2010/4/6 Arnaud Garcia <ar...@imagemed-87.com>
> >
> > > Hello,
> > >
> > > I have a simple DataView where each row has some labels and textfields.
> > > Each time the user enter in a textfield I would like to highlight the
> > > selected row. (The idea is to adapt the wicket stuff example
> > (OIRPage.java)
> > > with an AjaxFormComponentUpdatingBehavior("onfocus") instead of a
> simple
> > > Link)
> > >
> > >
> > > The example in wicket stuff
> > > (
> > >
> >
> http://wicketstuff.org/wicket/repeater/?wicket:bookmarkablePage=:org.apache.wicket.examples.repeater.OIRPage
> > > )
> > >
> > >  shows how to highlight the selected row using
> ReuseIfModelsEqualStrategy
> > > when the user click on a Link.
> > >
> > > Using the AjaxFormComponentUpdatingBehavior with the "onfocus" event I
> > try
> > > to simulate the Link click but it does not work...
> > >
> > >  myTextField.add(new AjaxFormComponentUpdatingBehavior("onfocus") {
> > >
> > >                     @Override
> > >                     protected void onUpdate(AjaxRequestTarget target) {
> > >                         HighlitableDataItem<EtudiantAS> hitem =
> > > (HighlitableDataItem<EtudiantAS>) item;
> > >                         hitem.toggleHighlite();
> > >                        // target.addComponent( ??? don' know what to
> put
> > > here, how to re-render the item)
> > >
> > >                     }
> > >                 });
> > >
> > >
> > > Well, any idea
> > >
> > > thanks
> > >
> > > Arnaud
> > >
> >
>



-- 
| Daniela Valero

"No hay vientos favorables para quien no sabe a donde quiere ir!

Re: DataView, ReuseIfModelsEqualStrategy, Ajax

Posted by Jeremy Thomerson <je...@wickettraining.com>.
Don't do this with AJAX - that's overkill.  Just use a JS library and attach
to onfocus.

--
Jeremy Thomerson
http://www.wickettraining.com



On Tue, Apr 6, 2010 at 1:21 PM, Arnaud Garcia <ar...@imagemed-87.com>wrote:

> ok, find, so just do:
>    item.setOutputMarkupPlaceholderTag(true);
> and
>
> myTextField.add(new AjaxEventBehavior("onfocus") {
>
>                    @Override
>                    protected void onEvent(AjaxRequestTarget target)
> {
>                        item.add(new SimpleAttributeModifier("class",
> "selected"));
>                        target.addComponent(item);
>                    }
>                });
>
>
> Arnaud
> 2010/4/6 Arnaud Garcia <ar...@imagemed-87.com>
>
> > Hello,
> >
> > I have a simple DataView where each row has some labels and textfields.
> > Each time the user enter in a textfield I would like to highlight the
> > selected row. (The idea is to adapt the wicket stuff example
> (OIRPage.java)
> > with an AjaxFormComponentUpdatingBehavior("onfocus") instead of a simple
> > Link)
> >
> >
> > The example in wicket stuff
> > (
> >
> http://wicketstuff.org/wicket/repeater/?wicket:bookmarkablePage=:org.apache.wicket.examples.repeater.OIRPage
> > )
> >
> >  shows how to highlight the selected row using ReuseIfModelsEqualStrategy
> > when the user click on a Link.
> >
> > Using the AjaxFormComponentUpdatingBehavior with the "onfocus" event I
> try
> > to simulate the Link click but it does not work...
> >
> >  myTextField.add(new AjaxFormComponentUpdatingBehavior("onfocus") {
> >
> >                     @Override
> >                     protected void onUpdate(AjaxRequestTarget target) {
> >                         HighlitableDataItem<EtudiantAS> hitem =
> > (HighlitableDataItem<EtudiantAS>) item;
> >                         hitem.toggleHighlite();
> >                        // target.addComponent( ??? don' know what to put
> > here, how to re-render the item)
> >
> >                     }
> >                 });
> >
> >
> > Well, any idea
> >
> > thanks
> >
> > Arnaud
> >
>

Re: DataView, ReuseIfModelsEqualStrategy, Ajax

Posted by Arnaud Garcia <ar...@imagemed-87.com>.
ok, find, so just do:
    item.setOutputMarkupPlaceholderTag(true);
and

myTextField.add(new AjaxEventBehavior("onfocus") {

                    @Override
                    protected void onEvent(AjaxRequestTarget target)
{
                        item.add(new SimpleAttributeModifier("class",
"selected"));
                        target.addComponent(item);
                    }
                });


Arnaud
2010/4/6 Arnaud Garcia <ar...@imagemed-87.com>

> Hello,
>
> I have a simple DataView where each row has some labels and textfields.
> Each time the user enter in a textfield I would like to highlight the
> selected row. (The idea is to adapt the wicket stuff example (OIRPage.java)
> with an AjaxFormComponentUpdatingBehavior("onfocus") instead of a simple
> Link)
>
>
> The example in wicket stuff
> (
> http://wicketstuff.org/wicket/repeater/?wicket:bookmarkablePage=:org.apache.wicket.examples.repeater.OIRPage
> )
>
>  shows how to highlight the selected row using ReuseIfModelsEqualStrategy
> when the user click on a Link.
>
> Using the AjaxFormComponentUpdatingBehavior with the "onfocus" event I try
> to simulate the Link click but it does not work...
>
>  myTextField.add(new AjaxFormComponentUpdatingBehavior("onfocus") {
>
>                     @Override
>                     protected void onUpdate(AjaxRequestTarget target) {
>                         HighlitableDataItem<EtudiantAS> hitem =
> (HighlitableDataItem<EtudiantAS>) item;
>                         hitem.toggleHighlite();
>                        // target.addComponent( ??? don' know what to put
> here, how to re-render the item)
>
>                     }
>                 });
>
>
> Well, any idea
>
> thanks
>
> Arnaud
>