You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by zkn <zk...@abv.bg> on 2010/01/22 16:04:41 UTC

Re: dynamically adding components to a ListView

On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:

> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
> 
> In this post you said "You found it". Could you please post how did you do it?
> 
> Zinovii

in addPanel()

replaced 

panels.add(panel);

with

panels.getModelObject().add(panel);





On 04.12.2009, at 00:17, zkn wrote:

> found it.
> 
> On 03.12.2009, at 16:19, zkn wrote:
> 
>> Hi,
>> 
>> I'm trying to dynamically add components to an existing ListView but I can't figure out how to do that. Here is my case:
>> 
>> MyPanelContainer  class with markup
>> 
>> <wicket:panel>
>> 	<wicket:container wicket:id="panels">
>> 		<wicket:container wicket:id="panel" />
>> 	</wicket:container>
>> 	<a href="#" wicket:id="addPanel">add panel</a>
>> </wicket:panel>
>> 
>> and here is how I create the container in the constructor of my page
>> 
>> ..
>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>> List<MyPanel> panels = new ArrayList<MyPanel>();
>> 
>> for (int j = 0; j < 5; j++) {
>> 	MyPanel panel = new MyPanel("panel");
>> 	
>> 	.....
>> 	
>> 	panels.add(panel);
>> .
>> 
>> 
>> container.add(new ListView<MyPanel>("panels", panels) {
>> 	protected void populateItem(ListItem<MyPanel> item) {
>> 		item.add( item.getModelObject());
>> 	}
>> });
>> add(Container);
>> ..
>> 
>> This works fine and I can see all  MyPanel inside the container.
>> 
>> Now I'm trying to add another MyPanel inside the container on user click. Here is the constructor of MyPanelContainer
>> 
>> public MyPanelContainer(String id) {
>> 		super(id);
>> 		....
>> 		add(new Link("addPanel") {
>> 				@Override
>> 				public void onClick() {
>> 					addPanel();
>> 				}
>> 				
>> 			});
>> .
>> 
>> ..
>> public void addPanel() {
>> 		
>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>> 		
>> 		MyPanel panel = new MyPanel("panel");
>> 		...
>> 		panels.add(panel);
>> 	}
>> 
>> Basically addPanel() does the same thing as in page constructor to add panels to the list but nothing shows up.
>> 
>> Thanks in advance for your help
>> 
>> Ozkan
>> 
> 


Re: dynamically adding components to a ListView

Posted by Pedro Santos <pe...@gmail.com>.
You are putting view objects inside the model of other view object. Models
are meant to keep your application domain data, and over that you create
your view. So:
For what MyPanel was designed?
1 - For present MyData

container.add(new ListView<MyData>("panels", panels) {
       protected void populateItem(ListItem<MyData> item) {
               item.add( new MyPanel("panel", item.getModelObject()));
       }
});

then you write:
panels.getModelObject().add(new MyData());
more some code to update panels like
target.addComponent(container);

2 - For present some static markup on template
so consider to use an less sophisticated repeater, like RepeatingView


On Fri, Jan 22, 2010 at 1:04 PM, zkn <zk...@abv.bg> wrote:

>
> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>
> >
> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
> >
> > In this post you said "You found it". Could you please post how did you
> do it?
> >
> > Zinovii
>
> in addPanel()
>
> replaced
>
> panels.add(panel);
>
> with
>
> panels.getModelObject().add(panel);
>
>
>
>
>
> On 04.12.2009, at 00:17, zkn wrote:
>
> > found it.
> >
> > On 03.12.2009, at 16:19, zkn wrote:
> >
> >> Hi,
> >>
> >> I'm trying to dynamically add components to an existing ListView but I
> can't figure out how to do that. Here is my case:
> >>
> >> MyPanelContainer  class with markup
> >>
> >> <wicket:panel>
> >>      <wicket:container wicket:id="panels">
> >>              <wicket:container wicket:id="panel" />
> >>      </wicket:container>
> >>      <a href="#" wicket:id="addPanel">add panel</a>
> >> </wicket:panel>
> >>
> >> and here is how I create the container in the constructor of my page
> >>
> >> ..
> >> MyPanelContainer container = new MyPanelContainer("panels_list_1");
> >> List<MyPanel> panels = new ArrayList<MyPanel>();
> >>
> >> for (int j = 0; j < 5; j++) {
> >>      MyPanel panel = new MyPanel("panel");
> >>
> >>      .....
> >>
> >>      panels.add(panel);
> >> .
> >>
> >>
> >> container.add(new ListView<MyPanel>("panels", panels) {
> >>      protected void populateItem(ListItem<MyPanel> item) {
> >>              item.add( item.getModelObject());
> >>      }
> >> });
> >> add(Container);
> >> ..
> >>
> >> This works fine and I can see all  MyPanel inside the container.
> >>
> >> Now I'm trying to add another MyPanel inside the container on user
> click. Here is the constructor of MyPanelContainer
> >>
> >> public MyPanelContainer(String id) {
> >>              super(id);
> >>              ....
> >>              add(new Link("addPanel") {
> >>                              @Override
> >>                              public void onClick() {
> >>                                      addPanel();
> >>                              }
> >>
> >>                      });
> >> .
> >>
> >> ..
> >> public void addPanel() {
> >>
> >>              ListView< MyPanel > panels = (ListView< MyPanel >)
> get("panels");
> >>
> >>              MyPanel panel = new MyPanel("panel");
> >>              ...
> >>              panels.add(panel);
> >>      }
> >>
> >> Basically addPanel() does the same thing as in page constructor to add
> panels to the list but nothing shows up.
> >>
> >> Thanks in advance for your help
> >>
> >> Ozkan
> >>
> >
>
>


-- 
Pedro Henrique Oliveira dos Santos

Re: dynamically adding components to a ListView

Posted by zdmytriv <va...@gmail.com>.
I think you meant 
container.getModelObject().add(panel);





zdmytriv wrote:
> 
> panels.getModelObject().add(panel);
> 
> panels is ArrayList and it doesn't have getModelObject() method.
> 
> 
> 
> 
> zkn wrote:
>> 
>> 
>> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>> 
>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>> 
>>> In this post you said "You found it". Could you please post how did you
>>> do it?
>>> 
>>> Zinovii
>> 
>> in addPanel()
>> 
>> replaced 
>> 
>> panels.add(panel);
>> 
>> with
>> 
>> panels.getModelObject().add(panel);
>> 
>> 
>> 
>> 
>> 
>> On 04.12.2009, at 00:17, zkn wrote:
>> 
>>> found it.
>>> 
>>> On 03.12.2009, at 16:19, zkn wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I'm trying to dynamically add components to an existing ListView but I
>>>> can't figure out how to do that. Here is my case:
>>>> 
>>>> MyPanelContainer  class with markup
>>>> 
>>>> <wicket:panel>
>>>> 	<wicket:container wicket:id="panels">
>>>> 		<wicket:container wicket:id="panel" />
>>>> 	</wicket:container>
>>>> 	 # add panel 
>>>> </wicket:panel>
>>>> 
>>>> and here is how I create the container in the constructor of my page
>>>> 
>>>> ..
>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>> 
>>>> for (int j = 0; j < 5; j++) {
>>>> 	MyPanel panel = new MyPanel("panel");
>>>> 	
>>>> 	.....
>>>> 	
>>>> 	panels.add(panel);
>>>> .
>>>> 
>>>> 
>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>> 	protected void populateItem(ListItem<MyPanel> item) {
>>>> 		item.add( item.getModelObject());
>>>> 	}
>>>> });
>>>> add(Container);
>>>> ..
>>>> 
>>>> This works fine and I can see all  MyPanel inside the container.
>>>> 
>>>> Now I'm trying to add another MyPanel inside the container on user
>>>> click. Here is the constructor of MyPanelContainer
>>>> 
>>>> public MyPanelContainer(String id) {
>>>> 		super(id);
>>>> 		....
>>>> 		add(new Link("addPanel") {
>>>> 				@Override
>>>> 				public void onClick() {
>>>> 					addPanel();
>>>> 				}
>>>> 				
>>>> 			});
>>>> .
>>>> 
>>>> ..
>>>> public void addPanel() {
>>>> 		
>>>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>>>> 		
>>>> 		MyPanel panel = new MyPanel("panel");
>>>> 		...
>>>> 		panels.add(panel);
>>>> 	}
>>>> 
>>>> Basically addPanel() does the same thing as in page constructor to add
>>>> panels to the list but nothing shows up.
>>>> 
>>>> Thanks in advance for your help
>>>> 
>>>> Ozkan
>>>> 
>>> 
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27289411.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: dynamically adding components to a ListView

Posted by zdmytriv <va...@gmail.com>.
panels.getModelObject().add(panel);

panels is ArrayList and it doesn't have getModelObject() method.





zkn wrote:
> 
> 
> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
> 
>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>> 
>> In this post you said "You found it". Could you please post how did you
>> do it?
>> 
>> Zinovii
> 
> in addPanel()
> 
> replaced 
> 
> panels.add(panel);
> 
> with
> 
> panels.getModelObject().add(panel);
> 
> 
> 
> 
> 
> On 04.12.2009, at 00:17, zkn wrote:
> 
>> found it.
>> 
>> On 03.12.2009, at 16:19, zkn wrote:
>> 
>>> Hi,
>>> 
>>> I'm trying to dynamically add components to an existing ListView but I
>>> can't figure out how to do that. Here is my case:
>>> 
>>> MyPanelContainer  class with markup
>>> 
>>> <wicket:panel>
>>> 	<wicket:container wicket:id="panels">
>>> 		<wicket:container wicket:id="panel" />
>>> 	</wicket:container>
>>> 	 # add panel 
>>> </wicket:panel>
>>> 
>>> and here is how I create the container in the constructor of my page
>>> 
>>> ..
>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>> 
>>> for (int j = 0; j < 5; j++) {
>>> 	MyPanel panel = new MyPanel("panel");
>>> 	
>>> 	.....
>>> 	
>>> 	panels.add(panel);
>>> .
>>> 
>>> 
>>> container.add(new ListView<MyPanel>("panels", panels) {
>>> 	protected void populateItem(ListItem<MyPanel> item) {
>>> 		item.add( item.getModelObject());
>>> 	}
>>> });
>>> add(Container);
>>> ..
>>> 
>>> This works fine and I can see all  MyPanel inside the container.
>>> 
>>> Now I'm trying to add another MyPanel inside the container on user
>>> click. Here is the constructor of MyPanelContainer
>>> 
>>> public MyPanelContainer(String id) {
>>> 		super(id);
>>> 		....
>>> 		add(new Link("addPanel") {
>>> 				@Override
>>> 				public void onClick() {
>>> 					addPanel();
>>> 				}
>>> 				
>>> 			});
>>> .
>>> 
>>> ..
>>> public void addPanel() {
>>> 		
>>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>>> 		
>>> 		MyPanel panel = new MyPanel("panel");
>>> 		...
>>> 		panels.add(panel);
>>> 	}
>>> 
>>> Basically addPanel() does the same thing as in page constructor to add
>>> panels to the list but nothing shows up.
>>> 
>>> Thanks in advance for your help
>>> 
>>> Ozkan
>>> 
>> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27289281.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: dynamically adding components to a ListView

Posted by Alexander Monakhov <do...@gmail.com>.
Hi, guys.

Just use PropertyModel.

Instead of this:

<code>
container.add(new ListView<MyPanel>("panels", panels) { ... }
</code>

use this

<code>
container.add( new ListView<MyPanel("panels", new PropertyModel<List<?
extends MyPanel>>( this, "panels" ) ) { ... }
</code>

where 'this' is referenced to instance of class that contains list of panels
as it's property.
And check PropertyModel description at Doc API.


Best regards, Alexander.

Re: dynamically adding components to a ListView

Posted by zdmytriv <va...@gmail.com>.
It doesn't create new panel on addPanelLink click.




kinabalu wrote:
> 
> might want to specify what isn't working exactly?
> 
> On Jan 23, 2010, at 1:15 PM, zdmytriv wrote:
> 
>> 
>> Could anyone tell me why it doesn't work? Thanks
>> 
>> InteractivePanelPage.html
>> 
>> <table>
>>    <tr>
>>        <td> # Add Panel </td>
>>    </tr>
>>    <tr wicket:id="interactiveListView">
>>        <td>
>> 
>>        </td>
>>    </tr>
>> </table>
>> 
>> InteractivePanelPage.java
>> 
>> // ... imports
>> public class InteractivePanelPage extends WebPage {
>>    public LinkedList<InteractivePanel> interactivePanels = new
>> LinkedList<InteractivePanel>();
>> 
>>    private ListView<InteractivePanel> interactiveList;
>> 
>>    public InteractivePanelPage() {
>>        add(new AjaxLink<String>("addPanelLink") {
>>            private static final long serialVersionUID = 1L;
>> 
>>            @Override
>>            public void onClick(AjaxRequestTarget target) {
>>                try {
>>                    System.out.println("link clicked");
>> 
>>                    InteractivePanel newInteractivePanel = new
>> InteractivePanel(
>>                            "interactiveItemPanel");
>>                    newInteractivePanel.setOutputMarkupId(true);
>> 
>> 
>> interactiveList.getModelObject().add(newInteractivePanel);
>>                } catch (Exception e) {
>>                    e.printStackTrace();
>>                }
>>            }
>>        });
>> 
>>        interactivePanels.add(new
>> InteractivePanel("interactiveItemPanel"));
>> 
>>        interactiveList = new
>> ListView<InteractivePanel>("interactiveListView",
>>                new PropertyModel<List<InteractivePanel>>(this,
>> "interactivePanels")) {
>>            private static final long serialVersionUID = 1L;
>> 
>>            @Override
>>            protected void populateItem(ListItem<InteractivePanel> item) {
>>                item.add(item.getModelObject());
>>            }
>>        };
>> 
>>        interactiveList.setOutputMarkupId(true);
>> 
>>        add(interactiveList);
>>    }
>> 
>>    public List<InteractivePanel> getInteractivePanels() {
>>        return interactivePanels;
>>    }
>> }
>> 
>> InteractivePanel.html
>> 
>> <html xmlns:wicket>
>> <wicket:panel>
>> <input type="button" value="BLAAA" wicket:id="simpleButton"/>
>> </wicket:panel>
>> </html>
>> 
>> InteractivePanel.java
>> 
>> // ... imports
>> public class InteractivePanel extends Panel {
>>    private static final long serialVersionUID = 1L;
>> 
>>    public InteractivePanel(String id) {
>>        super(id);
>> 
>>        add(new Button("simpleButton"));
>>    }
>> }
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> zkn wrote:
>>> 
>>> 
>>> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>>> 
>>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>>> 
>>>> In this post you said "You found it". Could you please post how did you
>>>> do it?
>>>> 
>>>> Zinovii
>>> 
>>> in addPanel()
>>> 
>>> replaced 
>>> 
>>> panels.add(panel);
>>> 
>>> with
>>> 
>>> panels.getModelObject().add(panel);
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On 04.12.2009, at 00:17, zkn wrote:
>>> 
>>>> found it.
>>>> 
>>>> On 03.12.2009, at 16:19, zkn wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> I'm trying to dynamically add components to an existing ListView but I
>>>>> can't figure out how to do that. Here is my case:
>>>>> 
>>>>> MyPanelContainer  class with markup
>>>>> 
>>>>> <wicket:panel>
>>>>> 	<wicket:container wicket:id="panels">
>>>>> 		<wicket:container wicket:id="panel" />
>>>>> 	</wicket:container>
>>>>> 	 # add panel 
>>>>> </wicket:panel>
>>>>> 
>>>>> and here is how I create the container in the constructor of my page
>>>>> 
>>>>> ..
>>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>>> 
>>>>> for (int j = 0; j < 5; j++) {
>>>>> 	MyPanel panel = new MyPanel("panel");
>>>>> 	
>>>>> 	.....
>>>>> 	
>>>>> 	panels.add(panel);
>>>>> .
>>>>> 
>>>>> 
>>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>>> 	protected void populateItem(ListItem<MyPanel> item) {
>>>>> 		item.add( item.getModelObject());
>>>>> 	}
>>>>> });
>>>>> add(Container);
>>>>> ..
>>>>> 
>>>>> This works fine and I can see all  MyPanel inside the container.
>>>>> 
>>>>> Now I'm trying to add another MyPanel inside the container on user
>>>>> click. Here is the constructor of MyPanelContainer
>>>>> 
>>>>> public MyPanelContainer(String id) {
>>>>> 		super(id);
>>>>> 		....
>>>>> 		add(new Link("addPanel") {
>>>>> 				@Override
>>>>> 				public void onClick() {
>>>>> 					addPanel();
>>>>> 				}
>>>>> 				
>>>>> 			});
>>>>> .
>>>>> 
>>>>> ..
>>>>> public void addPanel() {
>>>>> 		
>>>>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>>>>> 		
>>>>> 		MyPanel panel = new MyPanel("panel");
>>>>> 		...
>>>>> 		panels.add(panel);
>>>>> 	}
>>>>> 
>>>>> Basically addPanel() does the same thing as in page constructor to add
>>>>> panels to the list but nothing shows up.
>>>>> 
>>>>> Thanks in advance for your help
>>>>> 
>>>>> Ozkan
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>> 
>> -- 
>> View this message in context:
>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27289986.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 our success!
> 
> Mystic Coders, LLC | Code Magic | www.mysticcoders.com
> 
> ANDREW LOMBARDI | andrew@mysticcoders.com
> 2321 E 4th St. Ste C-128, Santa Ana CA 92705
> ofc: 714-816-4488
> fax: 714-782-6024
> cell: 714-697-8046
> linked-in: http://www.linkedin.com/in/andrewlombardi
> twitter: http://www.twitter.com/kinabalu
> 
> Eco-Tip: Printing e-mails is usually a waste.
> 
> ========================================================
> This message is for the named person's use only. You must not, directly or
> indirectly, use,
>  disclose, distribute, print, or copy any part of this message if you are
> not the intended recipient.
> ========================================================
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27290113.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: dynamically adding components to a ListView

Posted by Andrew Lombardi <an...@mysticcoders.com>.
might want to specify what isn't working exactly?

On Jan 23, 2010, at 1:15 PM, zdmytriv wrote:

> 
> Could anyone tell me why it doesn't work? Thanks
> 
> InteractivePanelPage.html
> 
> <table>
>    <tr>
>        <td> # Add Panel </td>
>    </tr>
>    <tr wicket:id="interactiveListView">
>        <td>
> 
>        </td>
>    </tr>
> </table>
> 
> InteractivePanelPage.java
> 
> // ... imports
> public class InteractivePanelPage extends WebPage {
>    public LinkedList<InteractivePanel> interactivePanels = new
> LinkedList<InteractivePanel>();
> 
>    private ListView<InteractivePanel> interactiveList;
> 
>    public InteractivePanelPage() {
>        add(new AjaxLink<String>("addPanelLink") {
>            private static final long serialVersionUID = 1L;
> 
>            @Override
>            public void onClick(AjaxRequestTarget target) {
>                try {
>                    System.out.println("link clicked");
> 
>                    InteractivePanel newInteractivePanel = new
> InteractivePanel(
>                            "interactiveItemPanel");
>                    newInteractivePanel.setOutputMarkupId(true);
> 
> 
> interactiveList.getModelObject().add(newInteractivePanel);
>                } catch (Exception e) {
>                    e.printStackTrace();
>                }
>            }
>        });
> 
>        interactivePanels.add(new InteractivePanel("interactiveItemPanel"));
> 
>        interactiveList = new
> ListView<InteractivePanel>("interactiveListView",
>                new PropertyModel<List<InteractivePanel>>(this,
> "interactivePanels")) {
>            private static final long serialVersionUID = 1L;
> 
>            @Override
>            protected void populateItem(ListItem<InteractivePanel> item) {
>                item.add(item.getModelObject());
>            }
>        };
> 
>        interactiveList.setOutputMarkupId(true);
> 
>        add(interactiveList);
>    }
> 
>    public List<InteractivePanel> getInteractivePanels() {
>        return interactivePanels;
>    }
> }
> 
> InteractivePanel.html
> 
> <html xmlns:wicket>
> <wicket:panel>
> <input type="button" value="BLAAA" wicket:id="simpleButton"/>
> </wicket:panel>
> </html>
> 
> InteractivePanel.java
> 
> // ... imports
> public class InteractivePanel extends Panel {
>    private static final long serialVersionUID = 1L;
> 
>    public InteractivePanel(String id) {
>        super(id);
> 
>        add(new Button("simpleButton"));
>    }
> }
> 
> 
> 
> 
> 
> 
> 
> 
> zkn wrote:
>> 
>> 
>> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>> 
>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>> 
>>> In this post you said "You found it". Could you please post how did you
>>> do it?
>>> 
>>> Zinovii
>> 
>> in addPanel()
>> 
>> replaced 
>> 
>> panels.add(panel);
>> 
>> with
>> 
>> panels.getModelObject().add(panel);
>> 
>> 
>> 
>> 
>> 
>> On 04.12.2009, at 00:17, zkn wrote:
>> 
>>> found it.
>>> 
>>> On 03.12.2009, at 16:19, zkn wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I'm trying to dynamically add components to an existing ListView but I
>>>> can't figure out how to do that. Here is my case:
>>>> 
>>>> MyPanelContainer  class with markup
>>>> 
>>>> <wicket:panel>
>>>> 	<wicket:container wicket:id="panels">
>>>> 		<wicket:container wicket:id="panel" />
>>>> 	</wicket:container>
>>>> 	 # add panel 
>>>> </wicket:panel>
>>>> 
>>>> and here is how I create the container in the constructor of my page
>>>> 
>>>> ..
>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>> 
>>>> for (int j = 0; j < 5; j++) {
>>>> 	MyPanel panel = new MyPanel("panel");
>>>> 	
>>>> 	.....
>>>> 	
>>>> 	panels.add(panel);
>>>> .
>>>> 
>>>> 
>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>> 	protected void populateItem(ListItem<MyPanel> item) {
>>>> 		item.add( item.getModelObject());
>>>> 	}
>>>> });
>>>> add(Container);
>>>> ..
>>>> 
>>>> This works fine and I can see all  MyPanel inside the container.
>>>> 
>>>> Now I'm trying to add another MyPanel inside the container on user
>>>> click. Here is the constructor of MyPanelContainer
>>>> 
>>>> public MyPanelContainer(String id) {
>>>> 		super(id);
>>>> 		....
>>>> 		add(new Link("addPanel") {
>>>> 				@Override
>>>> 				public void onClick() {
>>>> 					addPanel();
>>>> 				}
>>>> 				
>>>> 			});
>>>> .
>>>> 
>>>> ..
>>>> public void addPanel() {
>>>> 		
>>>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>>>> 		
>>>> 		MyPanel panel = new MyPanel("panel");
>>>> 		...
>>>> 		panels.add(panel);
>>>> 	}
>>>> 
>>>> Basically addPanel() does the same thing as in page constructor to add
>>>> panels to the list but nothing shows up.
>>>> 
>>>> Thanks in advance for your help
>>>> 
>>>> Ozkan
>>>> 
>>> 
>> 
>> 
>> 
> 
> -- 
> View this message in context: http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27289986.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 our success!

Mystic Coders, LLC | Code Magic | www.mysticcoders.com

ANDREW LOMBARDI | andrew@mysticcoders.com
2321 E 4th St. Ste C-128, Santa Ana CA 92705
ofc: 714-816-4488
fax: 714-782-6024
cell: 714-697-8046
linked-in: http://www.linkedin.com/in/andrewlombardi
twitter: http://www.twitter.com/kinabalu

Eco-Tip: Printing e-mails is usually a waste.

========================================================
This message is for the named person's use only. You must not, directly or indirectly, use,
 disclose, distribute, print, or copy any part of this message if you are not the intended recipient.
========================================================


Re: dynamically adding components to a ListView

Posted by zdmytriv <va...@gmail.com>.
Yes, the problem was I had to create container and then on onClick()

target.addComponent(newInteractivePanel);

Thanks everybody



RaBe wrote:
> 
> looks as it has been solved here:
> 
> http://stackoverflow.com/questions/2114351/dynamically-add-components-to-listview-in-wicket/
> 
> bert
> 
> On Sun, Jan 24, 2010 at 13:04, Sven Meier <sv...@meiers.net> wrote:
>> Hi,
>>
>> you'll have to tell the request target which components to redraw:
>> Put your list inside a markupcontainer and use addComponent().
>>
>> Sven
>>
>> zdmytriv wrote:
>>>
>>> Could anyone tell me why it doesn't work? Thanks
>>>
>>> InteractivePanelPage.html
>>>
>>> <table>
>>>    <tr>
>>>        <td> # Add Panel </td>
>>>    </tr>
>>>    <tr wicket:id="interactiveListView">
>>>        <td>
>>>                </td>
>>>    </tr>
>>> </table>
>>>
>>> InteractivePanelPage.java
>>>
>>> // ... imports
>>> public class InteractivePanelPage extends WebPage {
>>>    public LinkedList<InteractivePanel> interactivePanels = new
>>> LinkedList<InteractivePanel>();
>>>
>>>    private ListView<InteractivePanel> interactiveList;
>>>
>>>    public InteractivePanelPage() {
>>>        add(new AjaxLink<String>("addPanelLink") {
>>>            private static final long serialVersionUID = 1L;
>>>
>>>            @Override
>>>            public void onClick(AjaxRequestTarget target) {
>>>                try {
>>>                    System.out.println("link clicked");
>>>
>>>                    InteractivePanel newInteractivePanel = new
>>> InteractivePanel(
>>>                            "interactiveItemPanel");
>>>                    newInteractivePanel.setOutputMarkupId(true);
>>>
>>>
>>> interactiveList.getModelObject().add(newInteractivePanel);
>>>                } catch (Exception e) {
>>>                    e.printStackTrace();
>>>                }
>>>            }
>>>        });
>>>
>>>        interactivePanels.add(new
>>> InteractivePanel("interactiveItemPanel"));
>>>
>>>        interactiveList = new
>>> ListView<InteractivePanel>("interactiveListView",
>>>                new PropertyModel<List<InteractivePanel>>(this,
>>> "interactivePanels")) {
>>>            private static final long serialVersionUID = 1L;
>>>
>>>            @Override
>>>            protected void populateItem(ListItem<InteractivePanel> item)
>>> {
>>>                item.add(item.getModelObject());
>>>            }
>>>        };
>>>
>>>        interactiveList.setOutputMarkupId(true);
>>>
>>>        add(interactiveList);
>>>    }
>>>
>>>    public List<InteractivePanel> getInteractivePanels() {
>>>        return interactivePanels;
>>>    }
>>> }
>>>
>>> InteractivePanel.html
>>>
>>> <html xmlns:wicket>
>>> <wicket:panel>
>>> <input type="button" value="BLAAA" wicket:id="simpleButton"/>
>>> </wicket:panel>
>>> </html>
>>>
>>> InteractivePanel.java
>>>
>>> // ... imports
>>> public class InteractivePanel extends Panel {
>>>    private static final long serialVersionUID = 1L;
>>>
>>>    public InteractivePanel(String id) {
>>>        super(id);
>>>
>>>        add(new Button("simpleButton"));
>>>    }
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> zkn wrote:
>>>
>>>>
>>>> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>>>>
>>>>
>>>>>
>>>>>
>>>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>>>>
>>>>> In this post you said "You found it". Could you please post how did
>>>>> you
>>>>> do it?
>>>>>
>>>>> Zinovii
>>>>>
>>>>
>>>> in addPanel()
>>>>
>>>> replaced
>>>> panels.add(panel);
>>>>
>>>> with
>>>>
>>>> panels.getModelObject().add(panel);
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 04.12.2009, at 00:17, zkn wrote:
>>>>
>>>>
>>>>>
>>>>> found it.
>>>>>
>>>>> On 03.12.2009, at 16:19, zkn wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I'm trying to dynamically add components to an existing ListView but
>>>>>> I
>>>>>> can't figure out how to do that. Here is my case:
>>>>>>
>>>>>> MyPanelContainer  class with markup
>>>>>>
>>>>>> <wicket:panel>
>>>>>>        <wicket:container wicket:id="panels">
>>>>>>                <wicket:container wicket:id="panel" />
>>>>>>        </wicket:container>
>>>>>>         # add panel </wicket:panel>
>>>>>>
>>>>>> and here is how I create the container in the constructor of my page
>>>>>>
>>>>>> ..
>>>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>>>>
>>>>>> for (int j = 0; j < 5; j++) {
>>>>>>        MyPanel panel = new MyPanel("panel");
>>>>>>
>>>>>>        .....
>>>>>>
>>>>>>        panels.add(panel);
>>>>>> .
>>>>>>
>>>>>>
>>>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>>>>        protected void populateItem(ListItem<MyPanel> item) {
>>>>>>                item.add( item.getModelObject());
>>>>>>        }
>>>>>> });
>>>>>> add(Container);
>>>>>> ..
>>>>>>
>>>>>> This works fine and I can see all  MyPanel inside the container.
>>>>>>
>>>>>> Now I'm trying to add another MyPanel inside the container on user
>>>>>> click. Here is the constructor of MyPanelContainer
>>>>>>
>>>>>> public MyPanelContainer(String id) {
>>>>>>                super(id);
>>>>>>                ....
>>>>>>                add(new Link("addPanel") {
>>>>>>                                @Override
>>>>>>                                public void onClick() {
>>>>>>                                        addPanel();
>>>>>>                                }
>>>>>>
>>>>>>                        });
>>>>>> .
>>>>>>
>>>>>> ..
>>>>>> public void addPanel() {
>>>>>>
>>>>>>                ListView< MyPanel > panels = (ListView< MyPanel >)
>>>>>> get("panels");
>>>>>>
>>>>>>                MyPanel panel = new MyPanel("panel");
>>>>>>                ...
>>>>>>                panels.add(panel);
>>>>>>        }
>>>>>>
>>>>>> Basically addPanel() does the same thing as in page constructor to
>>>>>> add
>>>>>> panels to the list but nothing shows up.
>>>>>>
>>>>>> Thanks in advance for your help
>>>>>>
>>>>>> Ozkan
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> 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/dynamically-adding-components-to-a-ListView-tp26626657p27350292.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: dynamically adding components to a ListView

Posted by Bert <ta...@gmail.com>.
looks as it has been solved here:

http://stackoverflow.com/questions/2114351/dynamically-add-components-to-listview-in-wicket/

bert

On Sun, Jan 24, 2010 at 13:04, Sven Meier <sv...@meiers.net> wrote:
> Hi,
>
> you'll have to tell the request target which components to redraw:
> Put your list inside a markupcontainer and use addComponent().
>
> Sven
>
> zdmytriv wrote:
>>
>> Could anyone tell me why it doesn't work? Thanks
>>
>> InteractivePanelPage.html
>>
>> <table>
>>    <tr>
>>        <td> # Add Panel </td>
>>    </tr>
>>    <tr wicket:id="interactiveListView">
>>        <td>
>>                </td>
>>    </tr>
>> </table>
>>
>> InteractivePanelPage.java
>>
>> // ... imports
>> public class InteractivePanelPage extends WebPage {
>>    public LinkedList<InteractivePanel> interactivePanels = new
>> LinkedList<InteractivePanel>();
>>
>>    private ListView<InteractivePanel> interactiveList;
>>
>>    public InteractivePanelPage() {
>>        add(new AjaxLink<String>("addPanelLink") {
>>            private static final long serialVersionUID = 1L;
>>
>>            @Override
>>            public void onClick(AjaxRequestTarget target) {
>>                try {
>>                    System.out.println("link clicked");
>>
>>                    InteractivePanel newInteractivePanel = new
>> InteractivePanel(
>>                            "interactiveItemPanel");
>>                    newInteractivePanel.setOutputMarkupId(true);
>>
>>
>> interactiveList.getModelObject().add(newInteractivePanel);
>>                } catch (Exception e) {
>>                    e.printStackTrace();
>>                }
>>            }
>>        });
>>
>>        interactivePanels.add(new
>> InteractivePanel("interactiveItemPanel"));
>>
>>        interactiveList = new
>> ListView<InteractivePanel>("interactiveListView",
>>                new PropertyModel<List<InteractivePanel>>(this,
>> "interactivePanels")) {
>>            private static final long serialVersionUID = 1L;
>>
>>            @Override
>>            protected void populateItem(ListItem<InteractivePanel> item) {
>>                item.add(item.getModelObject());
>>            }
>>        };
>>
>>        interactiveList.setOutputMarkupId(true);
>>
>>        add(interactiveList);
>>    }
>>
>>    public List<InteractivePanel> getInteractivePanels() {
>>        return interactivePanels;
>>    }
>> }
>>
>> InteractivePanel.html
>>
>> <html xmlns:wicket>
>> <wicket:panel>
>> <input type="button" value="BLAAA" wicket:id="simpleButton"/>
>> </wicket:panel>
>> </html>
>>
>> InteractivePanel.java
>>
>> // ... imports
>> public class InteractivePanel extends Panel {
>>    private static final long serialVersionUID = 1L;
>>
>>    public InteractivePanel(String id) {
>>        super(id);
>>
>>        add(new Button("simpleButton"));
>>    }
>> }
>>
>>
>>
>>
>>
>>
>>
>>
>> zkn wrote:
>>
>>>
>>> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>>>
>>>
>>>>
>>>>
>>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>>>
>>>> In this post you said "You found it". Could you please post how did you
>>>> do it?
>>>>
>>>> Zinovii
>>>>
>>>
>>> in addPanel()
>>>
>>> replaced
>>> panels.add(panel);
>>>
>>> with
>>>
>>> panels.getModelObject().add(panel);
>>>
>>>
>>>
>>>
>>>
>>> On 04.12.2009, at 00:17, zkn wrote:
>>>
>>>
>>>>
>>>> found it.
>>>>
>>>> On 03.12.2009, at 16:19, zkn wrote:
>>>>
>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm trying to dynamically add components to an existing ListView but I
>>>>> can't figure out how to do that. Here is my case:
>>>>>
>>>>> MyPanelContainer  class with markup
>>>>>
>>>>> <wicket:panel>
>>>>>        <wicket:container wicket:id="panels">
>>>>>                <wicket:container wicket:id="panel" />
>>>>>        </wicket:container>
>>>>>         # add panel </wicket:panel>
>>>>>
>>>>> and here is how I create the container in the constructor of my page
>>>>>
>>>>> ..
>>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>>>
>>>>> for (int j = 0; j < 5; j++) {
>>>>>        MyPanel panel = new MyPanel("panel");
>>>>>
>>>>>        .....
>>>>>
>>>>>        panels.add(panel);
>>>>> .
>>>>>
>>>>>
>>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>>>        protected void populateItem(ListItem<MyPanel> item) {
>>>>>                item.add( item.getModelObject());
>>>>>        }
>>>>> });
>>>>> add(Container);
>>>>> ..
>>>>>
>>>>> This works fine and I can see all  MyPanel inside the container.
>>>>>
>>>>> Now I'm trying to add another MyPanel inside the container on user
>>>>> click. Here is the constructor of MyPanelContainer
>>>>>
>>>>> public MyPanelContainer(String id) {
>>>>>                super(id);
>>>>>                ....
>>>>>                add(new Link("addPanel") {
>>>>>                                @Override
>>>>>                                public void onClick() {
>>>>>                                        addPanel();
>>>>>                                }
>>>>>
>>>>>                        });
>>>>> .
>>>>>
>>>>> ..
>>>>> public void addPanel() {
>>>>>
>>>>>                ListView< MyPanel > panels = (ListView< MyPanel >)
>>>>> get("panels");
>>>>>
>>>>>                MyPanel panel = new MyPanel("panel");
>>>>>                ...
>>>>>                panels.add(panel);
>>>>>        }
>>>>>
>>>>> Basically addPanel() does the same thing as in page constructor to add
>>>>> panels to the list but nothing shows up.
>>>>>
>>>>> Thanks in advance for your help
>>>>>
>>>>> Ozkan
>>>>>
>>>>>
>>>
>>>
>>
>>
>
>
> ---------------------------------------------------------------------
> 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: dynamically adding components to a ListView

Posted by Sven Meier <sv...@meiers.net>.
Hi,

you'll have to tell the request target which components to redraw:
Put your list inside a markupcontainer and use addComponent().

Sven

zdmytriv wrote:
> Could anyone tell me why it doesn't work? Thanks
>
> InteractivePanelPage.html
>
> <table>
>     <tr>
>         <td> # Add Panel </td>
>     </tr>
>     <tr wicket:id="interactiveListView">
>         <td>
>         
>         </td>
>     </tr>
> </table>
>
> InteractivePanelPage.java
>
> // ... imports
> public class InteractivePanelPage extends WebPage {
>     public LinkedList<InteractivePanel> interactivePanels = new
> LinkedList<InteractivePanel>();
>
>     private ListView<InteractivePanel> interactiveList;
>
>     public InteractivePanelPage() {
>         add(new AjaxLink<String>("addPanelLink") {
>             private static final long serialVersionUID = 1L;
>
>             @Override
>             public void onClick(AjaxRequestTarget target) {
>                 try {
>                     System.out.println("link clicked");
>
>                     InteractivePanel newInteractivePanel = new
> InteractivePanel(
>                             "interactiveItemPanel");
>                     newInteractivePanel.setOutputMarkupId(true);
>
>                    
> interactiveList.getModelObject().add(newInteractivePanel);
>                 } catch (Exception e) {
>                     e.printStackTrace();
>                 }
>             }
>         });
>
>         interactivePanels.add(new InteractivePanel("interactiveItemPanel"));
>
>         interactiveList = new
> ListView<InteractivePanel>("interactiveListView",
>                 new PropertyModel<List<InteractivePanel>>(this,
> "interactivePanels")) {
>             private static final long serialVersionUID = 1L;
>
>             @Override
>             protected void populateItem(ListItem<InteractivePanel> item) {
>                 item.add(item.getModelObject());
>             }
>         };
>
>         interactiveList.setOutputMarkupId(true);
>
>         add(interactiveList);
>     }
>
>     public List<InteractivePanel> getInteractivePanels() {
>         return interactivePanels;
>     }
> }
>
> InteractivePanel.html
>
> <html xmlns:wicket>
> <wicket:panel>
> <input type="button" value="BLAAA" wicket:id="simpleButton"/>
> </wicket:panel>
> </html>
>
> InteractivePanel.java
>
> // ... imports
> public class InteractivePanel extends Panel {
>     private static final long serialVersionUID = 1L;
>
>     public InteractivePanel(String id) {
>         super(id);
>
>         add(new Button("simpleButton"));
>     }
> }
>
>
>
>
>
>
>
>
> zkn wrote:
>   
>> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
>>
>>     
>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>>
>>> In this post you said "You found it". Could you please post how did you
>>> do it?
>>>
>>> Zinovii
>>>       
>> in addPanel()
>>
>> replaced 
>>
>> panels.add(panel);
>>
>> with
>>
>> panels.getModelObject().add(panel);
>>
>>
>>
>>
>>
>> On 04.12.2009, at 00:17, zkn wrote:
>>
>>     
>>> found it.
>>>
>>> On 03.12.2009, at 16:19, zkn wrote:
>>>
>>>       
>>>> Hi,
>>>>
>>>> I'm trying to dynamically add components to an existing ListView but I
>>>> can't figure out how to do that. Here is my case:
>>>>
>>>> MyPanelContainer  class with markup
>>>>
>>>> <wicket:panel>
>>>> 	<wicket:container wicket:id="panels">
>>>> 		<wicket:container wicket:id="panel" />
>>>> 	</wicket:container>
>>>> 	 # add panel 
>>>> </wicket:panel>
>>>>
>>>> and here is how I create the container in the constructor of my page
>>>>
>>>> ..
>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>>
>>>> for (int j = 0; j < 5; j++) {
>>>> 	MyPanel panel = new MyPanel("panel");
>>>> 	
>>>> 	.....
>>>> 	
>>>> 	panels.add(panel);
>>>> .
>>>>
>>>>
>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>> 	protected void populateItem(ListItem<MyPanel> item) {
>>>> 		item.add( item.getModelObject());
>>>> 	}
>>>> });
>>>> add(Container);
>>>> ..
>>>>
>>>> This works fine and I can see all  MyPanel inside the container.
>>>>
>>>> Now I'm trying to add another MyPanel inside the container on user
>>>> click. Here is the constructor of MyPanelContainer
>>>>
>>>> public MyPanelContainer(String id) {
>>>> 		super(id);
>>>> 		....
>>>> 		add(new Link("addPanel") {
>>>> 				@Override
>>>> 				public void onClick() {
>>>> 					addPanel();
>>>> 				}
>>>> 				
>>>> 			});
>>>> .
>>>>
>>>> ..
>>>> public void addPanel() {
>>>> 		
>>>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>>>> 		
>>>> 		MyPanel panel = new MyPanel("panel");
>>>> 		...
>>>> 		panels.add(panel);
>>>> 	}
>>>>
>>>> Basically addPanel() does the same thing as in page constructor to add
>>>> panels to the list but nothing shows up.
>>>>
>>>> Thanks in advance for your help
>>>>
>>>> Ozkan
>>>>
>>>>         
>>
>>     
>
>   


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


Re: dynamically adding components to a ListView

Posted by zdmytriv <va...@gmail.com>.
Could anyone tell me why it doesn't work? Thanks

InteractivePanelPage.html

<table>
    <tr>
        <td> # Add Panel </td>
    </tr>
    <tr wicket:id="interactiveListView">
        <td>
        
        </td>
    </tr>
</table>

InteractivePanelPage.java

// ... imports
public class InteractivePanelPage extends WebPage {
    public LinkedList<InteractivePanel> interactivePanels = new
LinkedList<InteractivePanel>();

    private ListView<InteractivePanel> interactiveList;

    public InteractivePanelPage() {
        add(new AjaxLink<String>("addPanelLink") {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                try {
                    System.out.println("link clicked");

                    InteractivePanel newInteractivePanel = new
InteractivePanel(
                            "interactiveItemPanel");
                    newInteractivePanel.setOutputMarkupId(true);

                   
interactiveList.getModelObject().add(newInteractivePanel);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        interactivePanels.add(new InteractivePanel("interactiveItemPanel"));

        interactiveList = new
ListView<InteractivePanel>("interactiveListView",
                new PropertyModel<List<InteractivePanel>>(this,
"interactivePanels")) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(ListItem<InteractivePanel> item) {
                item.add(item.getModelObject());
            }
        };

        interactiveList.setOutputMarkupId(true);

        add(interactiveList);
    }

    public List<InteractivePanel> getInteractivePanels() {
        return interactivePanels;
    }
}

InteractivePanel.html

<html xmlns:wicket>
<wicket:panel>
<input type="button" value="BLAAA" wicket:id="simpleButton"/>
</wicket:panel>
</html>

InteractivePanel.java

// ... imports
public class InteractivePanel extends Panel {
    private static final long serialVersionUID = 1L;

    public InteractivePanel(String id) {
        super(id);

        add(new Button("simpleButton"));
    }
}








zkn wrote:
> 
> 
> On 22.01.2010, at 03:18, vasil.pupkin@gmail.com wrote:
> 
>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>> 
>> In this post you said "You found it". Could you please post how did you
>> do it?
>> 
>> Zinovii
> 
> in addPanel()
> 
> replaced 
> 
> panels.add(panel);
> 
> with
> 
> panels.getModelObject().add(panel);
> 
> 
> 
> 
> 
> On 04.12.2009, at 00:17, zkn wrote:
> 
>> found it.
>> 
>> On 03.12.2009, at 16:19, zkn wrote:
>> 
>>> Hi,
>>> 
>>> I'm trying to dynamically add components to an existing ListView but I
>>> can't figure out how to do that. Here is my case:
>>> 
>>> MyPanelContainer  class with markup
>>> 
>>> <wicket:panel>
>>> 	<wicket:container wicket:id="panels">
>>> 		<wicket:container wicket:id="panel" />
>>> 	</wicket:container>
>>> 	 # add panel 
>>> </wicket:panel>
>>> 
>>> and here is how I create the container in the constructor of my page
>>> 
>>> ..
>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>> 
>>> for (int j = 0; j < 5; j++) {
>>> 	MyPanel panel = new MyPanel("panel");
>>> 	
>>> 	.....
>>> 	
>>> 	panels.add(panel);
>>> .
>>> 
>>> 
>>> container.add(new ListView<MyPanel>("panels", panels) {
>>> 	protected void populateItem(ListItem<MyPanel> item) {
>>> 		item.add( item.getModelObject());
>>> 	}
>>> });
>>> add(Container);
>>> ..
>>> 
>>> This works fine and I can see all  MyPanel inside the container.
>>> 
>>> Now I'm trying to add another MyPanel inside the container on user
>>> click. Here is the constructor of MyPanelContainer
>>> 
>>> public MyPanelContainer(String id) {
>>> 		super(id);
>>> 		....
>>> 		add(new Link("addPanel") {
>>> 				@Override
>>> 				public void onClick() {
>>> 					addPanel();
>>> 				}
>>> 				
>>> 			});
>>> .
>>> 
>>> ..
>>> public void addPanel() {
>>> 		
>>> 		ListView< MyPanel > panels = (ListView< MyPanel >) get("panels");
>>> 		
>>> 		MyPanel panel = new MyPanel("panel");
>>> 		...
>>> 		panels.add(panel);
>>> 	}
>>> 
>>> Basically addPanel() does the same thing as in page constructor to add
>>> panels to the list but nothing shows up.
>>> 
>>> Thanks in advance for your help
>>> 
>>> Ozkan
>>> 
>> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27289986.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