Package com.ponysdk.ui.server.form

Source Code of com.ponysdk.ui.server.form.WizardActivity

package com.ponysdk.ui.server.form;

import java.util.ArrayList;
import java.util.List;

import com.ponysdk.core.deprecated.AbstractActivity;
import com.ponysdk.ui.server.basic.PAcceptsOneWidget;
import com.ponysdk.ui.server.basic.PButton;
import com.ponysdk.ui.server.basic.PDialogBox;
import com.ponysdk.ui.server.basic.PHorizontalPanel;
import com.ponysdk.ui.server.basic.PSimplePanel;
import com.ponysdk.ui.server.basic.PVerticalPanel;
import com.ponysdk.ui.server.basic.event.PClickEvent;
import com.ponysdk.ui.server.basic.event.PClickHandler;

/**
* @author mjbenjamin
*/
public class WizardActivity extends AbstractActivity {

    protected List<FormActivity> formActivities = new ArrayList<FormActivity>();

    protected PSimplePanel currentFormActivityPanel;

    protected boolean lastActivity = false;

    private final PButton previous = new PButton("Previous");

    private final PButton finish = new PButton("Finish");

    private final PButton cancel = new PButton("Cancel");

    private final PButton next = new PButton("Next");

    protected FormActivity currentFormActivity;

    int index;

    protected final List<WizardActivityHandler> wizardActivityHandlers = new ArrayList<WizardActivityHandler>();

    private final PDialogBox container;

    public interface WizardActivityHandler {

        public void onNext(FormActivity currentFormActivity);

        public void onPrevious(FormActivity currentFormActivity);

        public void onFinish(FormActivity currentFormActivity);
    }

    public WizardActivity(final String caption, final List<FormActivity> formActivities, final PDialogBox container) {
        this.formActivities = formActivities;
        this.container = container;
    }

    @Override
    public void start(final PAcceptsOneWidget world) {
        final PVerticalPanel verticalPanel = new PVerticalPanel();
        currentFormActivityPanel = new PSimplePanel();
        verticalPanel.add(currentFormActivityPanel);

        final PHorizontalPanel horizontalPanel = new PHorizontalPanel();
        verticalPanel.add(horizontalPanel);
        next.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                if (currentFormActivity.isValid() && index != (formActivities.size() - 1)) {
                    currentFormActivityPanel.clear();
                    for (final WizardActivityHandler handler : wizardActivityHandlers) {
                        handler.onNext(currentFormActivity);
                    }
                    index++;
                    currentFormActivity = formActivities.get(index);
                    currentFormActivity.start(currentFormActivityPanel);
                    update();
                }

            }
        });
        horizontalPanel.add(previous);
        previous.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                if (index != 0) {
                    currentFormActivityPanel.clear();
                    for (final WizardActivityHandler handler : wizardActivityHandlers) {
                        handler.onPrevious(currentFormActivity);
                    }
                    index--;
                    currentFormActivity = formActivities.get(index);
                    currentFormActivity.start(currentFormActivityPanel);
                    update();
                }
            }
        });
        horizontalPanel.add(next);
        horizontalPanel.add(finish);
        horizontalPanel.add(cancel);
        finish.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                boolean valid = true;
                for (final FormActivity activity : formActivities) {
                    if (!activity.isValid()) valid = false;
                }
                if (valid) {
                    for (final WizardActivityHandler handler : wizardActivityHandlers) {
                        handler.onFinish(currentFormActivity);
                    }
                }
            }
        });
        cancel.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent arg0) {
                container.hide();
            }
        });

        index = 0;
        currentFormActivity = formActivities.get(index);
        update();
        currentFormActivity.start(currentFormActivityPanel);

        world.setWidget(verticalPanel);
    }

    public void update() {
        finish.setVisible(index == (formActivities.size() - 1));
        next.setVisible(index < (formActivities.size() - 1));
        previous.setVisible(index != 0);

    }

    public List<FormActivity> getFormActivities() {
        return formActivities;
    }

    public void addFormActivity(final FormActivity formActivity) {
        this.formActivities.add(formActivity);
        update();
    }

    public void addWizardActivityHandler(final WizardActivityHandler handler) {
        wizardActivityHandlers.add(handler);
    }

}
TOP

Related Classes of com.ponysdk.ui.server.form.WizardActivity

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.