Re: Listview in a listview refresh with AjaxLink don't work

2009-11-17 Thread pieter claassen
Pedro,

Improved version now works. Here is my onclick for the AjaxFallBackLink.
Much of it I think is not best practice. Any tips on making this code
better?

Thanks a million for your help!

P

 AjaxFallbackLink up = new AjaxFallbackLink(up) {

@Override
public void onClick(AjaxRequestTarget target) {
AbstractDataSet dataset = datasetmodel.getEntity();
MarkupContainer container=null;
container=getParent();
while(!container.getId().equals(rows)){
container=container.getParent();
}
ListView view=null;
if (container instanceof ListView){
view=(ListView)container;
}
dataset.moveQuestionUp(question); //update the domain model
List list=QuestionProcessor.getMatrixToList(view.getList());
//extract the listview model data
QuestionProcessor.moveQuestionUp(list, question);
view.setList(QuestionProcessor.getListToMatrix(list,
Boolean.TRUE)); //reset the listview model data
adsf.store(dataset); //store my domain data to persist
target.addComponent(outercontainer); //repaint the whole lot
}
};



On Tue, Nov 17, 2009 at 1:47 PM, Pedro Santos pedros...@gmail.com wrote:
 Hi Pieter,
 When you call template.moveQuestionUp(question) you are altering the order
 of the template entity questions list. I think this isn't the same list on
 the row listview model, although both have the same objects.
 All lists used by repeaters are created by QuestionProcessor, you can make
 sure of using those lists operation over rowlistview.getlist() on
 moveQuestionUp implementation.

 On Sun, Nov 15, 2009 at 6:56 AM, pieter claassen 
pieter.claas...@gmail.com
 wrote:

 Hi Pedro,


 Here it is.

 So, I basically move the question up or down the array.

public void moveQuestionUp(QuestionBase question) {
int idx = questions.indexOf(question);
if (idx  0) {
questions.remove(question);
questions.add(idx - 1, question);
}
}

 I think that the listview is being redrawn in HTML but the matrix of
 data underlying it (that I retrieve here in the main page)

 ListListQuestionBase rows =


QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);

 does not get refreshed. I think I need to find a way to reload the
 data for the listview, from within my panel on a page.

 Cheers,
 Pieter




 On Sun, Nov 15, 2009 at 12:14 AM, Pedro Santos pedros...@gmail.com
 wrote:
  Can you send the moveQuestionUp implementation?
 
  On Sat, Nov 14, 2009 at 9:03 PM, pieter claassen
  pieter.claas...@gmail.com
  wrote:
 
  I am trying to follow wicket in action advice P263 but
 
  I have a ListView in a ListView with a panel added to my inner
  listview. On that panel, I have  an AjaxLink and I want to move items
  in the order of the listview around. But to display them, I need to
  refresh my matrix. Nothing seems to work. Any tips or references.
 
  QuestionEditPanel.html
  =
 wicket:extend
 div id=document
 span wicket:id=parent
 div wicket:id=rows
 span wicket:id=row
 span wicket:id=question /
 /span
 /div
 /span
 /div
 /wicket:extend
 
  QuestionEditPanel.java
  ==
 
 final WebMarkupContainer parent=new
  WebMarkupContainer(parent);
 add(parent);
 parent.setOutputMarkupId(true);
 ListListQuestionBase rows =
 
 
 
QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);
 ListView rowslistview = new ListView(rows, rows) {
 
 @Override
 protected void populateItem(ListItem item) {
 ListQuestionBase row = (ListQuestionBase)
  item.getModelObject();
 ListView rowlistview = new ListView(row, row) {
 
 @Override
 protected void populateItem(ListItem item) {
 final QuestionBase question = (QuestionBase)
  item.getModelObject();
 item.setModel(new
  CompoundPropertyModel(question));
 EditableQuestionPanel questionpanel=new
  EditableQuestionPanel(question, new
  QuestionBaseWebModel(question),templateWebModel,parent);
 item.add(questionpanel);
  
 
 
  and then on my EditableQuestionPanel.java I have :
 
  AjaxLink up = new AjaxLink(up) {
 
 @Override
 public void onClick(AjaxRequestTarget target) {
 target.addComponent(parent);
 Template template = templatemodel.getEntity();
 template.moveQuestionUp(question);
 

Re: Listview in a listview refresh with AjaxLink don't work

2009-11-15 Thread pieter claassen
Hi Pedro,


Here it is.

So, I basically move the question up or down the array.

public void moveQuestionUp(QuestionBase question) {
int idx = questions.indexOf(question);
if (idx  0) {
questions.remove(question);
questions.add(idx - 1, question);
}
}

I think that the listview is being redrawn in HTML but the matrix of
data underlying it (that I retrieve here in the main page)

ListListQuestionBase rows =
QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);

does not get refreshed. I think I need to find a way to reload the
data for the listview, from within my panel on a page.

Cheers,
Pieter




On Sun, Nov 15, 2009 at 12:14 AM, Pedro Santos pedros...@gmail.com wrote:
 Can you send the moveQuestionUp implementation?

 On Sat, Nov 14, 2009 at 9:03 PM, pieter claassen pieter.claas...@gmail.com
 wrote:

 I am trying to follow wicket in action advice P263 but

 I have a ListView in a ListView with a panel added to my inner
 listview. On that panel, I have  an AjaxLink and I want to move items
 in the order of the listview around. But to display them, I need to
 refresh my matrix. Nothing seems to work. Any tips or references.

 QuestionEditPanel.html
 =
        wicket:extend
            div id=document
                span wicket:id=parent
                    div wicket:id=rows
                        span wicket:id=row
                            span wicket:id=question /
                        /span
                    /div
                /span
            /div
        /wicket:extend

 QuestionEditPanel.java
 ==

        final WebMarkupContainer parent=new WebMarkupContainer(parent);
        add(parent);
        parent.setOutputMarkupId(true);
        ListListQuestionBase rows =

 QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);
        ListView rowslistview = new ListView(rows, rows) {

           �...@override
            protected void populateItem(ListItem item) {
                ListQuestionBase row = (ListQuestionBase)
 item.getModelObject();
                ListView rowlistview = new ListView(row, row) {

                   �...@override
                    protected void populateItem(ListItem item) {
                        final QuestionBase question = (QuestionBase)
 item.getModelObject();
                        item.setModel(new CompoundPropertyModel(question));
                        EditableQuestionPanel questionpanel=new
 EditableQuestionPanel(question, new
 QuestionBaseWebModel(question),templateWebModel,parent);
                        item.add(questionpanel);
 


 and then on my EditableQuestionPanel.java I have :

 AjaxLink up = new AjaxLink(up) {

           �...@override
            public void onClick(AjaxRequestTarget target) {
                target.addComponent(parent);
                Template template = templatemodel.getEntity();
                template.moveQuestionUp(question);
                tf.store(template);
            }
        };
 --
 Pieter Claassen
 musmato.com

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




 --
 Pedro Henrique Oliveira dos Santos




-- 
Pieter Claassen
musmato.com

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



Listview in a listview refresh with AjaxLink don't work

2009-11-15 Thread pieter claassen
Hi Pedro,

Here it is.

So, I basically move the question up or down the array.

   public void moveQuestionUp(QuestionBase question) {
       int idx = questions.indexOf(question);
       if (idx  0) {
           questions.remove(question);
           questions.add(idx - 1, question);
       }
   }

I think that the listview is being redrawn in HTML but the matrix of
data underlying it (that I retrieve here in the main page)

ListListQuestionBase rows =
QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);

does not get refreshed. I think I need to find a way to reload the
data for the listview, from within my panel on a page.

Cheers,
Pieter




On Sun, Nov 15, 2009 at 12:14 AM, Pedro Santos pedros...@gmail.com wrote:
 Can you send the moveQuestionUp implementation?

 On Sat, Nov 14, 2009 at 9:03 PM, pieter claassen pieter.claas...@gmail.com
 wrote:

 I am trying to follow wicket in action advice P263 but

 I have a ListView in a ListView with a panel added to my inner
 listview. On that panel, I have  an AjaxLink and I want to move items
 in the order of the listview around. But to display them, I need to
 refresh my matrix. Nothing seems to work. Any tips or references.

 QuestionEditPanel.html
 =
        wicket:extend
            div id=document
                span wicket:id=parent
                    div wicket:id=rows
                        span wicket:id=row
                            span wicket:id=question /
                        /span
                    /div
                /span
            /div
        /wicket:extend

 QuestionEditPanel.java
 ==

        final WebMarkupContainer parent=new WebMarkupContainer(parent);
        add(parent);
        parent.setOutputMarkupId(true);
        ListListQuestionBase rows =

 QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);
        ListView rowslistview = new ListView(rows, rows) {

           �...@override
            protected void populateItem(ListItem item) {
                ListQuestionBase row = (ListQuestionBase)
 item.getModelObject();
                ListView rowlistview = new ListView(row, row) {

                   �...@override
                    protected void populateItem(ListItem item) {
                        final QuestionBase question = (QuestionBase)
 item.getModelObject();
                        item.setModel(new CompoundPropertyModel(question));
                        EditableQuestionPanel questionpanel=new
 EditableQuestionPanel(question, new
 QuestionBaseWebModel(question),templateWebModel,parent);
                        item.add(questionpanel);
 


 and then on my EditableQuestionPanel.java I have :

 AjaxLink up = new AjaxLink(up) {

           �...@override
            public void onClick(AjaxRequestTarget target) {
                target.addComponent(parent);
                Template template = templatemodel.getEntity();
                template.moveQuestionUp(question);
                tf.store(template);
            }
        };
 --
 Pieter Claassen
 musmato.com

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




 --
 Pedro Henrique Oliveira dos Santos


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



Re: Listview in a listview refresh with AjaxLink don't work

2009-11-15 Thread wicketnewuser

I don't see your up link in the html markup. Doesn't look like you have
enough info here. If you are moving your question row up are you updating
the list for the listview. Also you are updating questionpanel with ajax
target . I think it would have to be your listview. I would use
ajaxsubmitlink as you might want to save the content or questionpanel when
moving your question up or down. Can you please post all relevent code if
this doesn't help

pieter claassen-2 wrote:
 
 I am trying to follow wicket in action advice P263 but
 
 I have a ListView in a ListView with a panel added to my inner
 listview. On that panel, I have  an AjaxLink and I want to move items
 in the order of the listview around. But to display them, I need to
 refresh my matrix. Nothing seems to work. Any tips or references.
 
 QuestionEditPanel.html
 =
 wicket:extend
 div id=document
 
 div wicket:id=rows
 
 
 
 /div
 
 /div
 /wicket:extend
 
 QuestionEditPanel.java
 ==
 
 final WebMarkupContainer parent=new WebMarkupContainer(parent);
 add(parent);
 parent.setOutputMarkupId(true);
 ListListQuestionBase rows =
 QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);
 ListView rowslistview = new ListView(rows, rows) {
 
 @Override
 protected void populateItem(ListItem item) {
 ListQuestionBase row = (ListQuestionBase)
 item.getModelObject();
 ListView rowlistview = new ListView(row, row) {
 
 @Override
 protected void populateItem(ListItem item) {
 final QuestionBase question = (QuestionBase)
 item.getModelObject();
 item.setModel(new
 CompoundPropertyModel(question));
 EditableQuestionPanel questionpanel=new
 EditableQuestionPanel(question, new
 QuestionBaseWebModel(question),templateWebModel,parent);
 item.add(questionpanel);
 
 
 
 and then on my EditableQuestionPanel.java I have :
 
 AjaxLink up = new AjaxLink(up) {
 
 @Override
 public void onClick(AjaxRequestTarget target) {
 target.addComponent(parent);
 Template template = templatemodel.getEntity();
 template.moveQuestionUp(question);
 tf.store(template);
 }
 };
 -- 
 Pieter Claassen
 musmato.com
 
 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 

-- 
View this message in context: 
http://old.nabble.com/Listview-in-a-listview-refresh-with-AjaxLink-don%27t-work-tp26354774p26362678.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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



Listview in a listview refresh with AjaxLink don't work

2009-11-14 Thread pieter claassen
I am trying to follow wicket in action advice P263 but

I have a ListView in a ListView with a panel added to my inner
listview. On that panel, I have  an AjaxLink and I want to move items
in the order of the listview around. But to display them, I need to
refresh my matrix. Nothing seems to work. Any tips or references.

QuestionEditPanel.html
=
wicket:extend
div id=document
span wicket:id=parent
div wicket:id=rows
span wicket:id=row
span wicket:id=question /
/span
/div
/span
/div
/wicket:extend

QuestionEditPanel.java
==

final WebMarkupContainer parent=new WebMarkupContainer(parent);
add(parent);
parent.setOutputMarkupId(true);
ListListQuestionBase rows =
QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);
ListView rowslistview = new ListView(rows, rows) {

@Override
protected void populateItem(ListItem item) {
ListQuestionBase row = (ListQuestionBase)
item.getModelObject();
ListView rowlistview = new ListView(row, row) {

@Override
protected void populateItem(ListItem item) {
final QuestionBase question = (QuestionBase)
item.getModelObject();
item.setModel(new CompoundPropertyModel(question));
EditableQuestionPanel questionpanel=new
EditableQuestionPanel(question, new
QuestionBaseWebModel(question),templateWebModel,parent);
item.add(questionpanel);



and then on my EditableQuestionPanel.java I have :

AjaxLink up = new AjaxLink(up) {

@Override
public void onClick(AjaxRequestTarget target) {
target.addComponent(parent);
Template template = templatemodel.getEntity();
template.moveQuestionUp(question);
tf.store(template);
}
};
-- 
Pieter Claassen
musmato.com

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



Re: Listview in a listview refresh with AjaxLink don't work

2009-11-14 Thread Pedro Santos
Can you send the moveQuestionUp implementation?

On Sat, Nov 14, 2009 at 9:03 PM, pieter claassen
pieter.claas...@gmail.comwrote:

 I am trying to follow wicket in action advice P263 but

 I have a ListView in a ListView with a panel added to my inner
 listview. On that panel, I have  an AjaxLink and I want to move items
 in the order of the listview around. But to display them, I need to
 refresh my matrix. Nothing seems to work. Any tips or references.

 QuestionEditPanel.html
 =
wicket:extend
div id=document
span wicket:id=parent
div wicket:id=rows
span wicket:id=row
span wicket:id=question /
/span
/div
/span
/div
/wicket:extend

 QuestionEditPanel.java
 ==

final WebMarkupContainer parent=new WebMarkupContainer(parent);
add(parent);
parent.setOutputMarkupId(true);
ListListQuestionBase rows =

 QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true);
ListView rowslistview = new ListView(rows, rows) {

@Override
protected void populateItem(ListItem item) {
ListQuestionBase row = (ListQuestionBase)
 item.getModelObject();
ListView rowlistview = new ListView(row, row) {

@Override
protected void populateItem(ListItem item) {
final QuestionBase question = (QuestionBase)
 item.getModelObject();
item.setModel(new CompoundPropertyModel(question));
EditableQuestionPanel questionpanel=new
 EditableQuestionPanel(question, new
 QuestionBaseWebModel(question),templateWebModel,parent);
item.add(questionpanel);
 


 and then on my EditableQuestionPanel.java I have :

 AjaxLink up = new AjaxLink(up) {

@Override
public void onClick(AjaxRequestTarget target) {
target.addComponent(parent);
Template template = templatemodel.getEntity();
template.moveQuestionUp(question);
tf.store(template);
}
};
 --
 Pieter Claassen
 musmato.com

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




-- 
Pedro Henrique Oliveira dos Santos