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