You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by prati <pr...@gmail.com> on 2010/03/11 19:09:42 UTC

Re: How to access ListItem from ListView from AjaxLink?

Hi 

I have got a refreshing view ,it contains list of links.I need to highlight
the link when i click on that link.

It works properly but if i click the next item in the list,the previous text
remains highlighted.

<wicket:extend>

<table cellspacing="0" class="dataview">
    <tr>
        
        <th>First Name</th>
        
    </tr>
    <tr wicket:id="view">
        <td> #     </td>
       
    </tr>
</table>

</wicket:extend>



public class RefreshingPage extends BasePage {

	
	public RefreshingPage()
	{
		final List<IModel> contacts = new ArrayList<IModel>(10);

		// populate list of contacts to be displayed

		Iterator<Contact> it = rgetContacts().iterator();
		while (it.hasNext())
		{
			contacts.add(new Model(it.next()));
		}

		// create the refreshing view
		RefreshingView view = new RefreshingView("view")
		{
			/**
			 * Return an iterator over models for items in the view
			 */
			@Override
			protected Iterator<IModel> getItemModels()
			{
				return contacts.iterator();
			}

			@Override
			protected void populateItem(final Item item)
			{
				Contact contact = (Contact) item.getModelObject();

				final Label contacteLabel = new Label("aname",contact.getName());
				contacteLabel.setOutputMarkupId(true);
				
				item.add(new AjaxLink("name") {

					private static final long serialVersionUID = 1L;

					@Override
					public void onClick(AjaxRequestTarget target) {

						if(target!= null) {
							contacteLabel.add(new
									AttributeModifier("style", true, new AbstractReadOnlyModel() {
										@Override
										public String getObject() {
											return "background-color:#80b6ed;";
										}
									}));
							target.addComponent(contacteLabel);
						}

					}



				}.add(contacteLabel));
			}
		};

		add(view);


	}
}


Regards
P


moontz wrote:
> 
> i tried that before.  did not work.  no compile or runtime errors, but the
> source did not show the change.
> 
> im thinking, since its an ajax link and because only the target panel
> refreshes, the change to the link is not applied because the actual link
> is not refreshed.  only the other panel is.  in which case i would need to
> append javascript.  i was hping there was a pure wicket solutioin though
> without using JS.
> 
> 
> 
> igor.vaynberg wrote:
>> 
>> final ListItem item
>> 
>> -igor
>> 
>> On Fri, Feb 13, 2009 at 7:36 AM, moontz <bm...@yahoo.com> wrote:
>>>
>>> I would like to add an attribute to the ListItem element in the markup
>>> (basically change the class style) on click of the link.  Below is my
>>> snippet.  Any insight on how I can accomplish this?  Thanks in advance!
>>>
>>> ListView lv = new ListView("tabListView", tabList) {
>>>                 protected void populateItem(ListItem item) {
>>>                         AjaxLink ajaxLink = new AjaxLink("tabLink",
>>> item.getModel()) {
>>>                           public void onClick(AjaxRequestTarget target)
>>> {
>>>                                        item.add(new
>>> SimpleAttributeModifier("class", "on"));  //
>>> want to do this but do not have access to item object from inner class 
>>> --
>>> ideas for this?
>>>                                             .
>>>                                             .
>>>                                             .
>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p21998739.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27867306.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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


Re: How to access ListItem from ListView from AjaxLink?

Posted by Cemal Bayramoglu <jW...@cabouge.com>.
   if(currentSelection != null){
       // you should remove existing behaviours on
       // currentSelection here or,
       // use an AtrributeModifier added, just once, to all your
       // labels with a model that has logic
       // checking against currentSelection to
       // calculate the correct value for your "style" attribute
       currentSelection.add(new SimpleAttributeModifier("style", ""));
       target.addComponent(currentSelection);
   }
   currentSelection = contacteLabel;

On 11 March 2010 22:50, Cemal Bayramoglu <jW...@cabouge.com> wrote:
> Prati,
>
> I'm not sure what you mean.
> Here's a couple of lines of code implementing what I described:
>
>    if(currentSelection != null){
>        // you should remove existing behaviours on
>        // currentSelection here or,
>        // use an AtrributeModifier added, just once, to all your
>        // labels with a model that has logic
>        // checking against currentSelection to
>        // calculate the correct value for your "style" attribute
>        currentSelection.add(new SimpleAttributeModifier("style", ""));
>        target.addComponent(
>    }
>    currentSelection = contacteLabel;
>
> Just declare "Component currentSelection;" in your RefreshingView.
>
> Regards - Cemal
> jWeekend
> OO & Java Technologies, Wicket
> Consulting, Development, Training
> http://jWeekend.com
>
>
> On 11 March 2010 21:44, prati <pr...@gmail.com> wrote:
>>
>> Hi Cemal,
>>
>> Thanks for replying me,but the list gets rendered only once,and i am able to
>> capture previous value on click but then how to move further.
>>
>>
>> Regards
>> P
>>
>> jWeekend wrote:
>>>
>>> Prati,
>>>
>>> This is because you are only re-rendering the most recently selected
>>> label.
>>>
>>> One solution is keep track of the previous "current selection"
>>> (probably in your RefreshingView implementation - eg declare
>>> "Component currentSelection;"), which you update in your Link's
>>> onClick (ie "currentSelecton = contactLabel;") _after_ you remove the
>>> style attribute (that you previously set) on currentSelection and add
>>> currrentSelection to the AjaxRequestTarget so it too gets refreshed.
>>>
>>> Make sense?
>>>
>>> Regards - Cemal
>>> jWeekend
>>> OO & Java Technologies, Wicket
>>> Consulting, Development, Training
>>> http://jWeekend.com
>>>
>>> On 11 March 2010 18:09, prati <pr...@gmail.com> wrote:
>>>>
>>>> Hi
>>>>
>>>> I have got a refreshing view ,it contains list of links.I need to
>>>> highlight
>>>> the link when i click on that link.
>>>>
>>>> It works properly but if i click the next item in the list,the previous
>>>> text
>>>> remains highlighted.
>>>>
>>>> <wicket:extend>
>>>>
>>>> <table cellspacing="0" class="dataview">
>>>>    <tr>
>>>>
>>>>        <th>First Name</th>
>>>>
>>>>    </tr>
>>>>    <tr wicket:id="view">
>>>>        <td> #     </td>
>>>>
>>>>    </tr>
>>>> </table>
>>>>
>>>> </wicket:extend>
>>>>
>>>>
>>>>
>>>> public class RefreshingPage extends BasePage {
>>>>
>>>>
>>>>        public RefreshingPage()
>>>>        {
>>>>                final List<IModel> contacts = new ArrayList<IModel>(10);
>>>>
>>>>                // populate list of contacts to be displayed
>>>>
>>>>                Iterator<Contact> it = rgetContacts().iterator();
>>>>                while (it.hasNext())
>>>>                {
>>>>                        contacts.add(new Model(it.next()));
>>>>                }
>>>>
>>>>                // create the refreshing view
>>>>                RefreshingView view = new RefreshingView("view")
>>>>                {
>>>>                        /**
>>>>                         * Return an iterator over models for items in the
>>>> view
>>>>                         */
>>>>                        @Override
>>>>                        protected Iterator<IModel> getItemModels()
>>>>                        {
>>>>                                return contacts.iterator();
>>>>                        }
>>>>
>>>>                        @Override
>>>>                        protected void populateItem(final Item item)
>>>>                        {
>>>>                                Contact contact = (Contact)
>>>> item.getModelObject();
>>>>
>>>>                                final Label contacteLabel = new
>>>> Label("aname",contact.getName());
>>>>                                contacteLabel.setOutputMarkupId(true);
>>>>
>>>>                                item.add(new AjaxLink("name") {
>>>>
>>>>                                        private static final long
>>>> serialVersionUID = 1L;
>>>>
>>>>                                        @Override
>>>>                                        public void
>>>> onClick(AjaxRequestTarget target) {
>>>>
>>>>                                                if(target!= null) {
>>>>
>>>>  contacteLabel.add(new
>>>>
>>>>  AttributeModifier("style", true, new AbstractReadOnlyModel() {
>>>>
>>>>      @Override
>>>>
>>>>      public String getObject() {
>>>>
>>>>              return "background-color:#80b6ed;";
>>>>
>>>>      }
>>>>
>>>>  }));
>>>>
>>>>  target.addComponent(contacteLabel);
>>>>                                                }
>>>>
>>>>                                        }
>>>>
>>>>
>>>>
>>>>                                }.add(contacteLabel));
>>>>                        }
>>>>                };
>>>>
>>>>                add(view);
>>>>
>>>>
>>>>        }
>>>> }
>>>>
>>>>
>>>> Regards
>>>> P
>>>>
>>>>
>>>> moontz wrote:
>>>>>
>>>>> i tried that before.  did not work.  no compile or runtime errors, but
>>>>> the
>>>>> source did not show the change.
>>>>>
>>>>> im thinking, since its an ajax link and because only the target panel
>>>>> refreshes, the change to the link is not applied because the actual link
>>>>> is not refreshed.  only the other panel is.  in which case i would need
>>>>> to
>>>>> append javascript.  i was hping there was a pure wicket solutioin though
>>>>> without using JS.
>>>>>
>>>>>
>>>>>
>>>>> igor.vaynberg wrote:
>>>>>>
>>>>>> final ListItem item
>>>>>>
>>>>>> -igor
>>>>>>
>>>>>> On Fri, Feb 13, 2009 at 7:36 AM, moontz <bm...@yahoo.com> wrote:
>>>>>>>
>>>>>>> I would like to add an attribute to the ListItem element in the markup
>>>>>>> (basically change the class style) on click of the link.  Below is my
>>>>>>> snippet.  Any insight on how I can accomplish this?  Thanks in
>>>>>>> advance!
>>>>>>>
>>>>>>> ListView lv = new ListView("tabListView", tabList) {
>>>>>>>                 protected void populateItem(ListItem item) {
>>>>>>>                         AjaxLink ajaxLink = new AjaxLink("tabLink",
>>>>>>> item.getModel()) {
>>>>>>>                           public void onClick(AjaxRequestTarget
>>>>>>> target)
>>>>>>> {
>>>>>>>                                        item.add(new
>>>>>>> SimpleAttributeModifier("class", "on"));  //
>>>>>>> want to do this but do not have access to item object from inner class
>>>>>>> --
>>>>>>> ideas for this?
>>>>>>>                                             .
>>>>>>>                                             .
>>>>>>>                                             .
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p21998739.html
>>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27867306.html
>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>>
>> --
>> View this message in context: http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27870307.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>

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


Re: How to access ListItem from ListView from AjaxLink?

Posted by Cemal Bayramoglu <jW...@cabouge.com>.
Prati,

I'm not sure what you mean.
Here's a couple of lines of code implementing what I described:

    if(currentSelection != null){
        // you should remove existing behaviours on
        // currentSelection here or,
        // use an AtrributeModifier added, just once, to all your
        // labels with a model that has logic
        // checking against currentSelection to
        // calculate the correct value for your "style" attribute
        currentSelection.add(new SimpleAttributeModifier("style", ""));
        target.addComponent(
    }
    currentSelection = contacteLabel;

Just declare "Component currentSelection;" in your RefreshingView.

Regards - Cemal
jWeekend
OO & Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com


On 11 March 2010 21:44, prati <pr...@gmail.com> wrote:
>
> Hi Cemal,
>
> Thanks for replying me,but the list gets rendered only once,and i am able to
> capture previous value on click but then how to move further.
>
>
> Regards
> P
>
> jWeekend wrote:
>>
>> Prati,
>>
>> This is because you are only re-rendering the most recently selected
>> label.
>>
>> One solution is keep track of the previous "current selection"
>> (probably in your RefreshingView implementation - eg declare
>> "Component currentSelection;"), which you update in your Link's
>> onClick (ie "currentSelecton = contactLabel;") _after_ you remove the
>> style attribute (that you previously set) on currentSelection and add
>> currrentSelection to the AjaxRequestTarget so it too gets refreshed.
>>
>> Make sense?
>>
>> Regards - Cemal
>> jWeekend
>> OO & Java Technologies, Wicket
>> Consulting, Development, Training
>> http://jWeekend.com
>>
>> On 11 March 2010 18:09, prati <pr...@gmail.com> wrote:
>>>
>>> Hi
>>>
>>> I have got a refreshing view ,it contains list of links.I need to
>>> highlight
>>> the link when i click on that link.
>>>
>>> It works properly but if i click the next item in the list,the previous
>>> text
>>> remains highlighted.
>>>
>>> <wicket:extend>
>>>
>>> <table cellspacing="0" class="dataview">
>>>    <tr>
>>>
>>>        <th>First Name</th>
>>>
>>>    </tr>
>>>    <tr wicket:id="view">
>>>        <td> #     </td>
>>>
>>>    </tr>
>>> </table>
>>>
>>> </wicket:extend>
>>>
>>>
>>>
>>> public class RefreshingPage extends BasePage {
>>>
>>>
>>>        public RefreshingPage()
>>>        {
>>>                final List<IModel> contacts = new ArrayList<IModel>(10);
>>>
>>>                // populate list of contacts to be displayed
>>>
>>>                Iterator<Contact> it = rgetContacts().iterator();
>>>                while (it.hasNext())
>>>                {
>>>                        contacts.add(new Model(it.next()));
>>>                }
>>>
>>>                // create the refreshing view
>>>                RefreshingView view = new RefreshingView("view")
>>>                {
>>>                        /**
>>>                         * Return an iterator over models for items in the
>>> view
>>>                         */
>>>                        @Override
>>>                        protected Iterator<IModel> getItemModels()
>>>                        {
>>>                                return contacts.iterator();
>>>                        }
>>>
>>>                        @Override
>>>                        protected void populateItem(final Item item)
>>>                        {
>>>                                Contact contact = (Contact)
>>> item.getModelObject();
>>>
>>>                                final Label contacteLabel = new
>>> Label("aname",contact.getName());
>>>                                contacteLabel.setOutputMarkupId(true);
>>>
>>>                                item.add(new AjaxLink("name") {
>>>
>>>                                        private static final long
>>> serialVersionUID = 1L;
>>>
>>>                                        @Override
>>>                                        public void
>>> onClick(AjaxRequestTarget target) {
>>>
>>>                                                if(target!= null) {
>>>
>>>  contacteLabel.add(new
>>>
>>>  AttributeModifier("style", true, new AbstractReadOnlyModel() {
>>>
>>>      @Override
>>>
>>>      public String getObject() {
>>>
>>>              return "background-color:#80b6ed;";
>>>
>>>      }
>>>
>>>  }));
>>>
>>>  target.addComponent(contacteLabel);
>>>                                                }
>>>
>>>                                        }
>>>
>>>
>>>
>>>                                }.add(contacteLabel));
>>>                        }
>>>                };
>>>
>>>                add(view);
>>>
>>>
>>>        }
>>> }
>>>
>>>
>>> Regards
>>> P
>>>
>>>
>>> moontz wrote:
>>>>
>>>> i tried that before.  did not work.  no compile or runtime errors, but
>>>> the
>>>> source did not show the change.
>>>>
>>>> im thinking, since its an ajax link and because only the target panel
>>>> refreshes, the change to the link is not applied because the actual link
>>>> is not refreshed.  only the other panel is.  in which case i would need
>>>> to
>>>> append javascript.  i was hping there was a pure wicket solutioin though
>>>> without using JS.
>>>>
>>>>
>>>>
>>>> igor.vaynberg wrote:
>>>>>
>>>>> final ListItem item
>>>>>
>>>>> -igor
>>>>>
>>>>> On Fri, Feb 13, 2009 at 7:36 AM, moontz <bm...@yahoo.com> wrote:
>>>>>>
>>>>>> I would like to add an attribute to the ListItem element in the markup
>>>>>> (basically change the class style) on click of the link.  Below is my
>>>>>> snippet.  Any insight on how I can accomplish this?  Thanks in
>>>>>> advance!
>>>>>>
>>>>>> ListView lv = new ListView("tabListView", tabList) {
>>>>>>                 protected void populateItem(ListItem item) {
>>>>>>                         AjaxLink ajaxLink = new AjaxLink("tabLink",
>>>>>> item.getModel()) {
>>>>>>                           public void onClick(AjaxRequestTarget
>>>>>> target)
>>>>>> {
>>>>>>                                        item.add(new
>>>>>> SimpleAttributeModifier("class", "on"));  //
>>>>>> want to do this but do not have access to item object from inner class
>>>>>> --
>>>>>> ideas for this?
>>>>>>                                             .
>>>>>>                                             .
>>>>>>                                             .
>>>>>>
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p21998739.html
>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27867306.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27870307.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: How to access ListItem from ListView from AjaxLink?

Posted by prati <pr...@gmail.com>.
Hi Cemal,

Thanks for replying me,but the list gets rendered only once,and i am able to
capture previous value on click but then how to move further.


Regards
P

jWeekend wrote:
> 
> Prati,
> 
> This is because you are only re-rendering the most recently selected
> label.
> 
> One solution is keep track of the previous "current selection"
> (probably in your RefreshingView implementation - eg declare
> "Component currentSelection;"), which you update in your Link's
> onClick (ie "currentSelecton = contactLabel;") _after_ you remove the
> style attribute (that you previously set) on currentSelection and add
> currrentSelection to the AjaxRequestTarget so it too gets refreshed.
> 
> Make sense?
> 
> Regards - Cemal
> jWeekend
> OO & Java Technologies, Wicket
> Consulting, Development, Training
> http://jWeekend.com
> 
> On 11 March 2010 18:09, prati <pr...@gmail.com> wrote:
>>
>> Hi
>>
>> I have got a refreshing view ,it contains list of links.I need to
>> highlight
>> the link when i click on that link.
>>
>> It works properly but if i click the next item in the list,the previous
>> text
>> remains highlighted.
>>
>> <wicket:extend>
>>
>> <table cellspacing="0" class="dataview">
>>    <tr>
>>
>>        <th>First Name</th>
>>
>>    </tr>
>>    <tr wicket:id="view">
>>        <td> #     </td>
>>
>>    </tr>
>> </table>
>>
>> </wicket:extend>
>>
>>
>>
>> public class RefreshingPage extends BasePage {
>>
>>
>>        public RefreshingPage()
>>        {
>>                final List<IModel> contacts = new ArrayList<IModel>(10);
>>
>>                // populate list of contacts to be displayed
>>
>>                Iterator<Contact> it = rgetContacts().iterator();
>>                while (it.hasNext())
>>                {
>>                        contacts.add(new Model(it.next()));
>>                }
>>
>>                // create the refreshing view
>>                RefreshingView view = new RefreshingView("view")
>>                {
>>                        /**
>>                         * Return an iterator over models for items in the
>> view
>>                         */
>>                        @Override
>>                        protected Iterator<IModel> getItemModels()
>>                        {
>>                                return contacts.iterator();
>>                        }
>>
>>                        @Override
>>                        protected void populateItem(final Item item)
>>                        {
>>                                Contact contact = (Contact)
>> item.getModelObject();
>>
>>                                final Label contacteLabel = new
>> Label("aname",contact.getName());
>>                                contacteLabel.setOutputMarkupId(true);
>>
>>                                item.add(new AjaxLink("name") {
>>
>>                                        private static final long
>> serialVersionUID = 1L;
>>
>>                                        @Override
>>                                        public void
>> onClick(AjaxRequestTarget target) {
>>
>>                                                if(target!= null) {
>>                                                      
>>  contacteLabel.add(new
>>                                                                      
>>  AttributeModifier("style", true, new AbstractReadOnlyModel() {
>>                                                                          
>>      @Override
>>                                                                          
>>      public String getObject() {
>>                                                                          
>>              return "background-color:#80b6ed;";
>>                                                                          
>>      }
>>                                                                      
>>  }));
>>                                                      
>>  target.addComponent(contacteLabel);
>>                                                }
>>
>>                                        }
>>
>>
>>
>>                                }.add(contacteLabel));
>>                        }
>>                };
>>
>>                add(view);
>>
>>
>>        }
>> }
>>
>>
>> Regards
>> P
>>
>>
>> moontz wrote:
>>>
>>> i tried that before.  did not work.  no compile or runtime errors, but
>>> the
>>> source did not show the change.
>>>
>>> im thinking, since its an ajax link and because only the target panel
>>> refreshes, the change to the link is not applied because the actual link
>>> is not refreshed.  only the other panel is.  in which case i would need
>>> to
>>> append javascript.  i was hping there was a pure wicket solutioin though
>>> without using JS.
>>>
>>>
>>>
>>> igor.vaynberg wrote:
>>>>
>>>> final ListItem item
>>>>
>>>> -igor
>>>>
>>>> On Fri, Feb 13, 2009 at 7:36 AM, moontz <bm...@yahoo.com> wrote:
>>>>>
>>>>> I would like to add an attribute to the ListItem element in the markup
>>>>> (basically change the class style) on click of the link.  Below is my
>>>>> snippet.  Any insight on how I can accomplish this?  Thanks in
>>>>> advance!
>>>>>
>>>>> ListView lv = new ListView("tabListView", tabList) {
>>>>>                 protected void populateItem(ListItem item) {
>>>>>                         AjaxLink ajaxLink = new AjaxLink("tabLink",
>>>>> item.getModel()) {
>>>>>                           public void onClick(AjaxRequestTarget
>>>>> target)
>>>>> {
>>>>>                                        item.add(new
>>>>> SimpleAttributeModifier("class", "on"));  //
>>>>> want to do this but do not have access to item object from inner class
>>>>> --
>>>>> ideas for this?
>>>>>                                             .
>>>>>                                             .
>>>>>                                             .
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p21998739.html
>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27867306.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27870307.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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


Re: How to access ListItem from ListView from AjaxLink?

Posted by Cemal Bayramoglu <jW...@cabouge.com>.
Prati,

This is because you are only re-rendering the most recently selected label.

One solution is keep track of the previous "current selection"
(probably in your RefreshingView implementation - eg declare
"Component currentSelection;"), which you update in your Link's
onClick (ie "currentSelecton = contactLabel;") _after_ you remove the
style attribute (that you previously set) on currentSelection and add
currrentSelection to the AjaxRequestTarget so it too gets refreshed.

Make sense?

Regards - Cemal
jWeekend
OO & Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com

On 11 March 2010 18:09, prati <pr...@gmail.com> wrote:
>
> Hi
>
> I have got a refreshing view ,it contains list of links.I need to highlight
> the link when i click on that link.
>
> It works properly but if i click the next item in the list,the previous text
> remains highlighted.
>
> <wicket:extend>
>
> <table cellspacing="0" class="dataview">
>    <tr>
>
>        <th>First Name</th>
>
>    </tr>
>    <tr wicket:id="view">
>        <td> #     </td>
>
>    </tr>
> </table>
>
> </wicket:extend>
>
>
>
> public class RefreshingPage extends BasePage {
>
>
>        public RefreshingPage()
>        {
>                final List<IModel> contacts = new ArrayList<IModel>(10);
>
>                // populate list of contacts to be displayed
>
>                Iterator<Contact> it = rgetContacts().iterator();
>                while (it.hasNext())
>                {
>                        contacts.add(new Model(it.next()));
>                }
>
>                // create the refreshing view
>                RefreshingView view = new RefreshingView("view")
>                {
>                        /**
>                         * Return an iterator over models for items in the view
>                         */
>                        @Override
>                        protected Iterator<IModel> getItemModels()
>                        {
>                                return contacts.iterator();
>                        }
>
>                        @Override
>                        protected void populateItem(final Item item)
>                        {
>                                Contact contact = (Contact) item.getModelObject();
>
>                                final Label contacteLabel = new Label("aname",contact.getName());
>                                contacteLabel.setOutputMarkupId(true);
>
>                                item.add(new AjaxLink("name") {
>
>                                        private static final long serialVersionUID = 1L;
>
>                                        @Override
>                                        public void onClick(AjaxRequestTarget target) {
>
>                                                if(target!= null) {
>                                                        contacteLabel.add(new
>                                                                        AttributeModifier("style", true, new AbstractReadOnlyModel() {
>                                                                                @Override
>                                                                                public String getObject() {
>                                                                                        return "background-color:#80b6ed;";
>                                                                                }
>                                                                        }));
>                                                        target.addComponent(contacteLabel);
>                                                }
>
>                                        }
>
>
>
>                                }.add(contacteLabel));
>                        }
>                };
>
>                add(view);
>
>
>        }
> }
>
>
> Regards
> P
>
>
> moontz wrote:
>>
>> i tried that before.  did not work.  no compile or runtime errors, but the
>> source did not show the change.
>>
>> im thinking, since its an ajax link and because only the target panel
>> refreshes, the change to the link is not applied because the actual link
>> is not refreshed.  only the other panel is.  in which case i would need to
>> append javascript.  i was hping there was a pure wicket solutioin though
>> without using JS.
>>
>>
>>
>> igor.vaynberg wrote:
>>>
>>> final ListItem item
>>>
>>> -igor
>>>
>>> On Fri, Feb 13, 2009 at 7:36 AM, moontz <bm...@yahoo.com> wrote:
>>>>
>>>> I would like to add an attribute to the ListItem element in the markup
>>>> (basically change the class style) on click of the link.  Below is my
>>>> snippet.  Any insight on how I can accomplish this?  Thanks in advance!
>>>>
>>>> ListView lv = new ListView("tabListView", tabList) {
>>>>                 protected void populateItem(ListItem item) {
>>>>                         AjaxLink ajaxLink = new AjaxLink("tabLink",
>>>> item.getModel()) {
>>>>                           public void onClick(AjaxRequestTarget target)
>>>> {
>>>>                                        item.add(new
>>>> SimpleAttributeModifier("class", "on"));  //
>>>> want to do this but do not have access to item object from inner class
>>>> --
>>>> ideas for this?
>>>>                                             .
>>>>                                             .
>>>>                                             .
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p21998739.html
>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/How-to-access-ListItem-from-ListView-from-AjaxLink--tp21998739p27867306.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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