I have used something similar to

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;

import com.google.inject.Inject;


public class EditPanel extends Panel {

    private IArticleEditFactory factory;

    private IArticle selected;

    private Form<IArticle> form;

    /**
     * @param id
     */
    public EditPanel(String id) {
        super(id);
        setOutputMarkupId(true);

        form = new Form<IArticle>("form");
        DropDownChoice<IArticle> choice = new
DropDownChoice<IArticle>("article", new Model<IArticle>() {

            public IArticle getObject() {
                return EditPanel.this.selected;
            };

            public void setObject(IArticle object) {
                EditPanel.this.selected = object;
            };

        }, listWithArticles );

        choice.add(new OnChangeAjaxBehavior() {

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                if(target != null) {
                    target.addComponent(EditPanel.this);
                }
            }
        });

        form.add(choice);
    }

    @Override
    protected void onBeforeRender() {
        if(selected != null) {
            form.addOrReplace(factory.createArticleEditPanel("content",
selected));
        } else {
            form.addOrReplace(new EmptyPanel("content"));
        }
        super.onBeforeRender();
    }

}

for such situations... I delegate creation to a factory class (so that new
products can be plugged in).

Best,

Ernesto

On Wed, Nov 11, 2009 at 2:53 PM, srm <s...@schokokeks.org> wrote:

> How would you approach the following:
> PageA is used to insert an article. At first, the user chooses what kind of
> article to insert (DropDownChoice).
> When the User made his choice, a coresponding form should be loaded/visible
> underneath the
> DropDownChoice. That's all to be solved without JavaScript.
> My current idea is currently to add an Panel (AddArticlePanel) which holds
> all fields for any kind of article
> and make them visible depending on what the user has chosen (using
> onSelectionChanged).
> But that seems like a brute approach so I wanted to get your opinions on
> this.
>
> Further information will be happily provided.
>
> Regards,
> Stephan
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to