Package com.googlecode.wicketwebbeans.examples.contexts

Source Code of com.googlecode.wicketwebbeans.examples.contexts.DynamicContextBeanPage

package com.googlecode.wicketwebbeans.examples.contexts;


import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;

import com.googlecode.wicketwebbeans.containers.BeanForm;
import com.googlecode.wicketwebbeans.examples.simple.TestBean;
import com.googlecode.wicketwebbeans.model.BeanMetaData;
import com.googlecode.wicketwebbeans.model.api.JAction;
import com.googlecode.wicketwebbeans.model.api.JBean;
import com.googlecode.wicketwebbeans.model.api.JBeans;
import com.googlecode.wicketwebbeans.model.api.JProperty;

/**
* NOTE: to use action methods as global actions or without an ajax context,
* please use:
*     setResponsePage(DynamicContextBeanPage.class);
* otherwise, in ajax context use:
*     target.addComponent(this.form);
*/
public class DynamicContextBeanPage extends WebPage
{
    private static final long serialVersionUID = 1002855853289127918L;

    JBeans jbeans;
    BeanMetaData meta;
    BeanForm form;
    private boolean global = false;

    private static TestBean bean;

    static {
        if (bean == null) {
            bean = new TestBean(); // Think of this as getting it from DB
        }
    }

    public DynamicContextBeanPage()
    {
        /**
         * NOTE: you take actions away from beans metadata
         * and test the contexts with global actions
         */
        jbeans = new JBeans(
            new JBean(TestBean.class)
                .context("nofirstname")
                .actions(
                    new JAction("goToGlobal").ajax(true)
                )
                .properties(
                    new JProperty("action.goToGlobal"),
                    new JProperty("-action.clear"),
                    new JProperty("-action.global"),
                    new JProperty("firstName"),
                    new JProperty("lastName"),
                    new JProperty("operand1"),
                    new JProperty("operand2"),
                    new JProperty("result"),
                    new JProperty("number")
                ),
            new JBean(TestBean.class)
                .context("clearfirstname")
                .actions(
                    new JAction("clear").ajax(true)
                )
                .properties(
                    new JProperty("-action.goToGlobal"),
                    new JProperty("action.clear"),
                    new JProperty("-action.global"),
                    new JProperty("firstName").viewOnly(true),
                    new JProperty("lastName").viewOnly(true),
                    new JProperty("operand1"),
                    new JProperty("operand2"),
                    new JProperty("-result"),
                    new JProperty("-number")
                ),

            new JBean(TestBean.class)
                .context("global")
                .properties(
                    new JProperty("-action.goToGlobal"),
                    new JProperty("-action.clear"),
                    new JProperty("firstName"),
                    new JProperty("lastName").viewOnly(true),
                    new JProperty("operand1").viewOnly(true),
                    new JProperty("operand2").viewOnly(true),
                    new JProperty("result").viewOnly(true),
                    new JProperty("number").viewOnly(true)
                )

        );
        meta = new BeanMetaData(bean.getClass(), getContext(), jbeans, this, null, false);
        form = new BeanForm("beanForm", bean, meta);
        form.setOutputMarkupId(true);
        add( form );
    }

    private String getContext() {
        if (global) {
            return "global";
        } else {
            if (bean.getFirstName() == null || bean.getFirstName().equals("")) {
                return "nofirstname";
            } else {
                return "clearfirstname";
            }
        }
    }

    /**
     * Actions
     * @param target
     * @param form
     * @param bean
     */
    public void goToGlobal(AjaxRequestTarget target, Form form, TestBean bean) {
        global = true;
        meta.setContext(getContext());
        this.form.recreateFormContents();
        target.addComponent(this.form);
    }

    public void clear(AjaxRequestTarget target, Form form, TestBean bean) {
        bean.setFirstName("");
        meta.setContext(getContext());
        this.form.recreateFormContents();
        target.addComponent(this.form);
    }

    public void global(AjaxRequestTarget target, Form form, TestBean bean) {
        global = false;
        meta.setContext(getContext());
        this.form.recreateFormContents();
        setResponsePage(DynamicContextBeanPage.class);
    }

}
TOP

Related Classes of com.googlecode.wicketwebbeans.examples.contexts.DynamicContextBeanPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.