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) >> >> List<List<QuestionBase>> 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); >> >> List<List<QuestionBase>> rows = >> >> >> >> >> >> QuestionProcessor.getQuestionMatrix(templateWebModel.getEntity().getQuestions(),true); >> >> ListView rowslistview = new ListView("rows", rows) { >> >> >> >> @Override >> >> protected void populateItem(ListItem item) { >> >> List<QuestionBase> row = (List<QuestionBase>) >> >> 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 > > > > -- > Pedro Henrique Oliveira dos Santos > -- Pieter Claassen musmato.com