Example usage for org.apache.wicket.extensions.wizard WizardStep WizardStep

List of usage examples for org.apache.wicket.extensions.wizard WizardStep WizardStep

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.wizard WizardStep WizardStep.

Prototype

public WizardStep() 

Source Link

Document

Construct without a title and a summary.

Usage

From source file:cz.zcu.kiv.eegdatabase.wui.ui.experiments.metadata.MetadataForm.java

License:Apache License

public MetadataForm(String id, IModel<Section> model, final int experimentId) {
    super(id);/*from   w w  w .  jav a  2 s . c  om*/

    this.model = new CompoundPropertyModel<Section>(model);
    setDefaultModel(this.model);
    setOutputMarkupId(true);

    wizardModel = new WizardModel();
    if (model.getObject() != null) {
        for (Section section : model.getObject().getSections()) {
            wizardModel.add(new MetadataWizardStep(new Model<Section>(section)));
        }
    } else {
        wizardModel.add(new WizardStep());
    }

    wizard = new Wizard("wizard", wizardModel, true) {

        private static final long serialVersionUID = 1L;

        @Override
        public void onFinish() {
            Section data = MetadataForm.this.model.getObject();
            Experiment experiment = expFacade.getExperimentForDetail(experimentId);
            experiment.getElasticExperiment().setMetadata(data);
            expFacade.update(experiment);
            setResponsePage(ExperimentsDetailPage.class,
                    PageParametersUtils.getDefaultPageParameters(experimentId));
        }

        @Override
        public void onCancel() {
            throw new RestartResponseAtInterceptPageException(MetadataForm.this.getPage().getPageClass(),
                    MetadataForm.this.getPage().getPageParameters());
        }

    };
    wizard.setOutputMarkupId(true);

    add(wizard.setVisible(model.getObject() != null));

    int personId = EEGDataBaseSession.get().getLoggedUser().getPersonId();
    List<Template> templatesByPerson = templateFacade.getTemplatesByPerson(personId);
    ChoiceRenderer<Template> templateChoiceRenderer = new ChoiceRenderer<Template>("name", "templateId");
    AjaxDropDownChoice<Template> templateSelection = new AjaxDropDownChoice<Template>("template-choice",
            new Model<Template>(), templatesByPerson, templateChoiceRenderer) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSelectionChangeAjaxified(AjaxRequestTarget target, Template template) {

            try {
                Reader reader = new Reader();
                Section section = reader
                        .load(new ByteInputStream(template.getTemplate(), template.getTemplate().length));
                section.setName(template.getName());
                MetadataForm.this.model.setObject(section);

                wizardModel = new WizardModel();
                for (Section subsection : section.getSections()) {
                    wizardModel.add(new MetadataWizardStep(new Model<Section>(subsection)));
                }

                Wizard wiz = new Wizard("wizard", wizardModel, true) {

                    private static final long serialVersionUID = 1L;

                    @Override
                    public void onFinish() {
                        Section data = MetadataForm.this.model.getObject();
                        Experiment experiment = expFacade.getExperimentForDetail(experimentId);
                        experiment.getElasticExperiment().setMetadata(data);
                        expFacade.update(experiment);
                        setResponsePage(ExperimentsDetailPage.class,
                                PageParametersUtils.getDefaultPageParameters(experimentId));
                    }

                    @Override
                    public void onCancel() {
                        throw new RestartResponseAtInterceptPageException(
                                MetadataForm.this.getPage().getPageClass(),
                                MetadataForm.this.getPage().getPageParameters());
                    }

                };

                wizard = (Wizard) wizard.replaceWith(wiz);
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                error(ResourceUtils.getString("text.template.error.load"));
            }

            target.add(MetadataForm.this);
        }

    };

    add(templateSelection);

    AjaxLink<Void> saveAsTemplate = new AjaxLink<Void>("saveAsTemplate") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {

            Section section = MetadataForm.this.model.getObject();
            String templateName = section.getName() != null ? section.getName() + "-savedFromWizard"
                    : "Template-savedFromWizard";
            Date now = new Date();
            templateName += "-"
                    + DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(now);

            Writer writer = new Writer(section, true, true);
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();

            if (writer.write(byteStream)) {

                Template template = new Template();
                byte[] templateXML = byteStream.toByteArray();

                template.setTemplate(templateXML);
                template.setName(templateName);
                template.setPersonByPersonId(EEGDataBaseSession.get().getLoggedUser());
                templateFacade.create(template);

                setResponsePage(ListTemplatePage.class);
            } else {
                error(ResourceUtils.getString("text.template.error.save"));
            }
        }
    };

    add(saveAsTemplate);
}