Example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow close

List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow close

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow close.

Prototype

public void close(final IPartialPageRequestHandler target) 

Source Link

Document

Closes the modal window.

Usage

From source file:org.geoserver.web.data.layergroup.RootLayerEntryPanel.java

License:Open Source License

@SuppressWarnings({ "rawtypes" })
public RootLayerEntryPanel(String id, final Form form, WorkspaceInfo workspace) {
    super(id);//from w w  w  .j ava  2  s.  co  m

    setOutputMarkupId(true);

    final TextField<LayerInfo> rootLayerField = new TextField<LayerInfo>("rootLayer") {
        @Override
        public IConverter getConverter(Class<?> type) {
            return form.getConverter(type);
        }
    };
    rootLayerField.setOutputMarkupId(true);
    rootLayerField.setRequired(true);
    add(rootLayerField);

    // global styles
    List<StyleInfo> globalStyles = new ArrayList<StyleInfo>();
    List<StyleInfo> allStyles = GeoServerApplication.get().getCatalog().getStyles();
    for (StyleInfo s : allStyles) {
        if (s.getWorkspace() == null) {
            globalStyles.add(s);
        }
    }

    // available styles
    List<StyleInfo> styles = new ArrayList<StyleInfo>();
    styles.addAll(globalStyles);
    if (workspace != null) {
        styles.addAll(GeoServerApplication.get().getCatalog().getStylesByWorkspace(workspace));
    }

    DropDownChoice<StyleInfo> styleField = new DropDownChoice<StyleInfo>("rootLayerStyle", styles) {
        @Override
        public IConverter getConverter(Class<?> type) {
            return form.getConverter(type);
        }
    };
    styleField.setNullValid(true);
    add(styleField);

    final ModalWindow popupWindow = new ModalWindow("popup");
    add(popupWindow);
    add(new AjaxLink("add") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            popupWindow.setInitialHeight(375);
            popupWindow.setInitialWidth(525);
            popupWindow.setTitle(new ParamResourceModel("chooseLayer", this));
            popupWindow.setContent(new LayerListPanel(popupWindow.getContentId()) {
                @Override
                protected void handleLayer(LayerInfo layer, AjaxRequestTarget target) {
                    popupWindow.close(target);
                    ((LayerGroupInfo) form.getModelObject()).setRootLayer(layer);
                    target.addComponent(rootLayerField);
                }
            });

            popupWindow.show(target);
        }
    });
}

From source file:org.geoserver.wps.web.SubProcessBuilder.java

License:Open Source License

public SubProcessBuilder(ExecuteRequest request, final ModalWindow window) {
    Form form = new Form("form");
    add(form);/*from w  ww .j a  va 2 s .  c o  m*/

    final WPSRequestBuilderPanel builder = new WPSRequestBuilderPanel("builder", request);
    form.add(builder);

    form.add(new AjaxSubmitLink("apply") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            window.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            super.onError(target, form);
            target.addComponent(builder.getFeedbackPanel());
        }
    });

}

From source file:org.obiba.onyx.quartz.core.wicket.layout.impl.simplified.ModalFeedbackPanel.java

License:Open Source License

/**
 * @param id Component id./*from   ww  w  . j  av  a 2 s . c o m*/
 * @param feedbackWindow ModalWindow in which the panel will be displayed.
 */
@SuppressWarnings("serial")
public ModalFeedbackPanel(final ModalWindow feedbackWindow) {
    super("content");
    feedbackWindow.setTitle(new StringResourceModel("ModalWindowTitle", this, null));
    feedbackWindow.setResizable(false);
    this.setEscapeModelStrings(false);

    add(new AjaxImageLink("close", new StringResourceModel("CloseModalButton", this, null)) {

        @Override
        public void onClick(AjaxRequestTarget target) {
            feedbackWindow.close(target);
        }

    });

}

From source file:org.obiba.onyx.quartz.editor.category.CategoryWindow.java

License:Open Source License

public CategoryWindow(String id, final IModel<QuestionCategory> model,
        final IModel<Questionnaire> questionnaireModel, final IModel<LocaleProperties> localePropertiesModel,
        final ModalWindow modalWindow) {
    super(id, model);

    QuestionCategory questionCategory = model.getObject();

    final Category category = questionCategory.getCategory();

    add(form = new Form<QuestionCategory>("form", model));
    form.setMultiPart(false);//from  w w  w.j  a v a  2 s  .  c o m

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);

    List<ITab> tabs = new ArrayList<ITab>();
    AjaxSubmitTabbedPanel ajaxSubmitTabbedPanel = new AjaxSubmitTabbedPanel("categoryTabs", feedbackPanel,
            feedbackWindow, tabs);

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("Category")) {
        @Override
        public Panel getPanel(String panelId) {
            categoryPanel = new CategoryPanel(panelId, model, questionnaireModel, localePropertiesModel,
                    feedbackPanel, feedbackWindow) {
            };
            return categoryPanel;
        }
    }));

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("OpenAnswerDefinitions")) {
        @Override
        public Panel getPanel(String panelId) {
            return new OpenAnswerListPanel(panelId, model, questionnaireModel, localePropertiesModel,
                    feedbackPanel, feedbackWindow);
        }
    }));

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("Attributes")) {
        @Override
        public Panel getPanel(String panelId) {
            return new AttributesPanel(panelId, new Model<Category>(category),
                    questionnaireModel.getObject().getLocales(), feedbackPanel, feedbackWindow);
        }
    }));

    form.add(ajaxSubmitTabbedPanel);

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            categoryPanel.onSave(target);
            CategoryWindow.this.onSave(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form1) {
            CategoryWindow.this.onCancel(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

}

From source file:org.obiba.onyx.quartz.editor.openAnswer.autocomplete.SuggestionItemWindow.java

License:Open Source License

public SuggestionItemWindow(String id, IModel<OpenAnswerDefinition> model, IModel<String> itemModel,
        IModel<LocaleProperties> localePropertiesModel, final ModalWindow modalWindow) {
    super(id, model);

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);//  w w w .j a va  2  s  .c o m

    OpenAnswerDefinitionSuggestion openAnswerSuggestion = new OpenAnswerDefinitionSuggestion(model.getObject());

    final Form<OpenAnswerDefinition> form = new Form<OpenAnswerDefinition>("form", model);
    form.setMultiPart(false);
    add(form);

    String originalItem = itemModel.getObject();

    final TextField<String> name = new TextField<String>("name", itemModel);
    name.setLabel(new ResourceModel("Name"));
    name.add(new RequiredFormFieldBehavior());
    form.add(name).add(new SimpleFormComponentLabel("nameLabel", name));

    // excludes other openAnswer label properties
    Map<String, Boolean> visibleStates = new HashMap<String, Boolean>();
    visibleStates.put("label", false);
    visibleStates.put("unitLabel", false);
    for (String item : openAnswerSuggestion.getSuggestionItems()) {
        visibleStates.put(item, StringUtils.equals(item, originalItem));
    }

    form.add(new LabelsPanel("labels", localePropertiesModel, model, feedbackPanel, feedbackWindow, null,
            visibleStates));

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            if (form.hasError())
                return;
            SuggestionItemWindow.this.onSave(target, name.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form1) {
            SuggestionItemWindow.this.onCancel(target);
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });
}

From source file:org.obiba.onyx.quartz.editor.openAnswer.OpenAnswerWindow.java

License:Open Source License

public OpenAnswerWindow(String id, final IModel<OpenAnswerDefinition> model,
        final IModel<Category> categoryModel, final IModel<Question> questionModel,
        final IModel<Questionnaire> questionnaireModel, final IModel<LocaleProperties> localePropertiesModel,
        final ModalWindow modalWindow) {
    super(id, model);

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);/*w  w  w .  j  av a  2s .c  o m*/

    add(form = new Form<OpenAnswerDefinition>("form", model));
    form.setMultiPart(false);

    List<ITab> tabs = new ArrayList<ITab>();
    AjaxSubmitTabbedPanel ajaxSubmitTabbedPanel = new AjaxSubmitTabbedPanel("openAnswerTabs", feedbackPanel,
            feedbackWindow, tabs);
    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("OpenAnswerDefinition")) {
        @Override
        public Panel getPanel(String panelId) {
            switch (model.getObject().getOpenAnswerType()) {
            case AUDIO_RECORDING:
                openAnswerPanel = new AudioOpenAnswerPanel(panelId, model, categoryModel, questionModel,
                        questionnaireModel);
                break;
            case AUTO_COMPLETE:
                openAnswerPanel = new AutoCompleteOpenAnswerPanel(panelId, model, categoryModel, questionModel,
                        questionnaireModel, localePropertiesModel, feedbackPanel, feedbackWindow);
                break;
            default:
                openAnswerPanel = new OpenAnswerPanel(panelId, model, categoryModel, questionModel,
                        questionnaireModel, localePropertiesModel, feedbackPanel, feedbackWindow);
            }
            return openAnswerPanel;
        }
    }));

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("Attributes")) {
        @Override
        public Panel getPanel(String panelId) {
            return new AttributesPanel(panelId, new Model<OpenAnswerDefinition>(model.getObject()),
                    questionnaireModel.getObject().getLocales(), feedbackPanel, feedbackWindow);
        }
    }));

    form.add(ajaxSubmitTabbedPanel);

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            ((SaveablePanel) openAnswerPanel).onSave(target);
            if (form.hasError())
                return;
            OpenAnswerWindow.this.onSave(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form1) {
            OpenAnswerWindow.this.onCancel(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

}

From source file:org.obiba.onyx.quartz.editor.openAnswer.validation.ValidationDataSourceWindow.java

License:Open Source License

public ValidationDataSourceWindow(String id, IModel<ComparingDataSource> model,
        final IModel<Question> questionModel, final IModel<Questionnaire> questionnaireModel,
        final DataType dataType, final ModalWindow modalWindow) {
    super(id, model);
    this.dataType = dataType;

    final ValueType valueType = VariableUtils.convertToValueType(dataType);

    add(CSSPackageResource.getHeaderContribution(ValidationDataSourceWindow.class,
            "ValidationDataSourceWindow.css"));

    variableWindow = new ModalWindow("variableWindow");
    variableWindow.setCssClassName("onyx");
    variableWindow.setInitialWidth(950);
    variableWindow.setInitialHeight(540);
    variableWindow.setResizable(true);// w  ww . j a  v a  2s  .  c  om
    variableWindow.setTitle(new ResourceModel("Variable"));
    add(variableWindow);

    final Questionnaire questionnaire = questionnaireModel.getObject();

    final OpenAnswerValidator validator = new OpenAnswerValidator();
    if (model.getObject() != null) {
        ComparingDataSource comparingDataSource = model.getObject();
        validator.setOperator(comparingDataSource.getComparisonOperator());
        IDataSource dataSourceRight = comparingDataSource.getDataSourceRight();
        if (dataSourceRight instanceof VariableDataSource) {
            VariableDataSource variableDataSource = (VariableDataSource) dataSourceRight;
            if (questionnaire.getName().equals(variableDataSource.getTableName())) {
                try {
                    validator.setVariable(questionnaire.getVariable(variableDataSource.getVariableName()));
                    validator.setType(Type.VARIABLE);
                } catch (IllegalArgumentException e) {
                    // not found in this questionnaire
                }
            }
            if (validator.getType() == null) { // not found yet
                Variable variable = variableUtils.findVariable(variableDataSource);
                if (variable != null) {
                    try {
                        validator.setVariable(questionnaire.getVariable(variable.getName()));
                        validator.setType(Type.VARIABLE);
                    } catch (IllegalArgumentException e) {
                        // not found
                        Question question = VariableUtils.findQuestion(variable,
                                QuestionnaireFinder.getInstance(questionnaire));
                        validator.setType(Type.QUESTION_CATEGORY);
                        validator.setQuestion(question);
                        Category category = VariableUtils.findCategory(variable, question);
                        validator.setCategory(category);
                        validator.setOpenAnswer(VariableUtils.findOpenAnswer(variable, category));
                    }
                }
            }
        } else if (dataSourceRight instanceof JavascriptDataSource) {
            JavascriptDataSource javascriptDataSource = (JavascriptDataSource) dataSourceRight;
            validator.setType(JAVASCRIPT);
            validator.setScript(javascriptDataSource.getScript());
        }
    }

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);

    add(feedbackWindow);

    add(form = new Form<OpenAnswerValidator>("form", new Model<OpenAnswerValidator>(validator)));
    form.setMultiPart(false);

    IChoiceRenderer<ComparisonOperator> operatorRenderer = new IChoiceRenderer<ComparisonOperator>() {
        @Override
        public String getIdValue(ComparisonOperator operator, int index) {
            return operator.name();
        }

        @Override
        public Object getDisplayValue(ComparisonOperator operator) {
            return new StringResourceModel("Operator." + operator, ValidationDataSourceWindow.this, null)
                    .getString();
        }
    };

    List<ComparisonOperator> comparisonOperatorAsList = null;
    if (dataType == DataType.TEXT) {
        comparisonOperatorAsList = Arrays.asList(ComparisonOperator.eq, ComparisonOperator.ne,
                ComparisonOperator.in);
    } else {
        comparisonOperatorAsList = Arrays.asList(ComparisonOperator.values());
    }
    final DropDownChoice<ComparisonOperator> operator = new DropDownChoice<ComparisonOperator>("operator",
            new PropertyModel<ComparisonOperator>(form.getModel(), "operator"), comparisonOperatorAsList,
            operatorRenderer);
    form.add(operator.setLabel(new ResourceModel("Operator")).setRequired(true))
            .add(new SimpleFormComponentLabel("operatorLabel", operator));

    final RadioGroup<Type> validationType = new RadioGroup<Type>("validationType",
            new PropertyModel<Type>(form.getModel(), "type"));
    form.add(validationType.setLabel(new ResourceModel("Variable")).setRequired(true));

    final Radio<Type> questionType = new Radio<Type>("questionType", new Model<Type>(QUESTION_CATEGORY));
    questionType.setLabel(new ResourceModel("QuestionType"));
    validationType.add(questionType).add(new SimpleFormComponentLabel("questionTypeLabel", questionType));

    final WebMarkupContainer questionTypeContainer = new WebMarkupContainer("questionTypeContainer");
    questionTypeContainer.setOutputMarkupId(true);
    validationType.add(questionTypeContainer);

    final WebMarkupContainer questionConditionContainer = new WebMarkupContainer("questionConditionContainer");
    questionConditionContainer.setVisible(validator.getType() == QUESTION_CATEGORY);
    questionTypeContainer.add(questionConditionContainer);

    if (questionnaire.getQuestionnaireCache() == null) {
        QuestionnaireFinder.getInstance(questionnaire).buildQuestionnaireCache();
    }

    List<Question> questions = new ArrayList<Question>(
            questionnaire.getQuestionnaireCache().getQuestionCache().values());
    Collections.sort(questions, new QuestionnaireElementComparator());
    final Multimap<Question, Category> questionCategories = LinkedHashMultimap.create();
    final Multimap<Category, OpenAnswerDefinition> categoryOpenAnswer = LinkedHashMultimap.create();
    for (Question q : questions) {
        if (!q.equals(questionModel.getObject()) && q.getType() != QuestionType.BOILER_PLATE) {
            final List<Category> findCategories = findCategories(q);
            for (Category category : findCategories) {
                categoryOpenAnswer.putAll(category, category.getOpenAnswerDefinitionsByName().values());
            }
            questionCategories.putAll(q, findCategories);
        }
    }

    final DropDownChoice<Question> questionName = new DropDownChoice<Question>("question",
            new PropertyModel<Question>(form.getModel(), "question"),
            new ArrayList<Question>(questionCategories.keySet()), new QuestionnaireElementNameRenderer()) {
        @Override
        public boolean isRequired() {
            return validationType.getModelObject() == QUESTION_CATEGORY;
        }
    };

    questionName.setLabel(new ResourceModel("Question"));
    questionConditionContainer.add(questionName)
            .add(new SimpleFormComponentLabel("questionLabel", questionName));

    final List<Category> categories = questionName.getModelObject() == null ? new ArrayList<Category>()
            : new ArrayList<Category>(questionCategories.get(questionName.getModelObject()));

    final DropDownChoice<Category> categoryName = new DropDownChoice<Category>("category",
            new PropertyModel<Category>(form.getModel(), "category"), categories,
            new QuestionnaireElementNameRenderer()) {
        @Override
        public boolean isRequired() {
            return validationType.getModelObject() == QUESTION_CATEGORY;
        }
    };
    categoryName.setLabel(new ResourceModel("Category"));
    questionConditionContainer.add(categoryName)
            .add(new SimpleFormComponentLabel("categoryLabel", categoryName));

    final List<OpenAnswerDefinition> openAnswers = categoryName.getModelObject() == null
            ? new ArrayList<OpenAnswerDefinition>()
            : new ArrayList<OpenAnswerDefinition>(categoryOpenAnswer.get(categoryName.getModelObject()));

    final DropDownChoice<OpenAnswerDefinition> openAnswerName = new DropDownChoice<OpenAnswerDefinition>(
            "openAnswer", new PropertyModel<OpenAnswerDefinition>(form.getModel(), "openAnswer"), openAnswers,
            new QuestionnaireElementNameRenderer()) {
        @Override
        public boolean isRequired() {
            return validationType.getModelObject() == QUESTION_CATEGORY;
        }
    };

    questionName.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            categories.clear();
            openAnswers.clear();
            categories.addAll(questionName.getModelObject() == null ? new ArrayList<Category>()
                    : new ArrayList<Category>(questionCategories.get(questionName.getModelObject())));
            openAnswers.addAll(categories.isEmpty() ? new ArrayList<OpenAnswerDefinition>()
                    : new ArrayList<OpenAnswerDefinition>(categoryOpenAnswer.get(categories.get(0))));
            target.addComponent(categoryName);
            target.addComponent(openAnswerName);
        }
    });

    categoryName.add(new OnChangeAjaxBehavior() {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            openAnswers.clear();
            openAnswers.addAll(categoryName.getModelObject() == null ? new ArrayList<OpenAnswerDefinition>()
                    : new ArrayList<OpenAnswerDefinition>(
                            categoryOpenAnswer.get(categoryName.getModelObject())));
            target.addComponent(openAnswerName);
        }
    });

    openAnswerName.setLabel(new ResourceModel("OpenAnswer"));
    questionConditionContainer.add(openAnswerName)
            .add(new SimpleFormComponentLabel("openAnswerLabel", openAnswerName));

    Radio<Type> variableType = new Radio<Type>("variableType", new Model<Type>(VARIABLE));
    variableType.setLabel(new ResourceModel("Variable"));
    validationType.add(variableType).add(new SimpleFormComponentLabel("variableTypeLabel", variableType));

    final WebMarkupContainer variableTypeContainer = new WebMarkupContainer("variableTypeContainer");
    variableTypeContainer.setOutputMarkupId(true);
    validationType.add(variableTypeContainer);

    final WebMarkupContainer variableContainer = new WebMarkupContainer("variableContainer");
    variableContainer.setVisible(validator.getType() == VARIABLE);
    variableTypeContainer.add(variableContainer);

    final List<Variable> variables = new ArrayList<Variable>(
            Collections2.filter(questionnaire.getVariables(), new Predicate<Variable>() {
                @Override
                public boolean apply(Variable v) {
                    // Filter for text when the operator is 'IN'
                    if (validator.getOperator() != null
                            && validator.getOperator().equals(ComparisonOperator.in)) {
                        return v.getValueType().equals(VariableUtils.convertToValueType(DataType.TEXT));
                    }
                    return v.getValueType().equals(valueType);
                }
            }));

    final DropDownChoice<Variable> variableDropDown = new DropDownChoice<Variable>("variable",
            new PropertyModel<Variable>(form.getModel(), "variable"), variables, new VariableRenderer()) {
        @Override
        public boolean isRequired() {
            return validationType.getModelObject() == VARIABLE;
        }
    };
    variableDropDown.setLabel(new ResourceModel("Variable")).setOutputMarkupId(true);
    variableContainer.add(variableDropDown);

    final WebMarkupContainer previewVariableVisibility = new WebMarkupContainer("previewVariableVisibility");
    variableContainer.add(previewVariableVisibility.setOutputMarkupId(true));

    final Image previewVariable = new Image("previewVariable", Images.ZOOM);
    previewVariable.add(new AttributeModifier("title", true, new ResourceModel("Preview")));
    previewVariable.setVisible(variableDropDown.getModelObject() != null);
    previewVariableVisibility.add(previewVariable);

    final Label previewScript = new Label("previewScript", variableDropDown.getModelObject() == null ? ""
            : variableDropDown.getModelObject().getAttributeStringValue("script"));
    previewScript.add(new SyntaxHighlighterBehavior());
    previewScript.add(new AttributeAppender("style", true, new Model<String>("display: none;"), " "));
    previewVariableVisibility.add(previewScript);

    final Map<String, Object> tooltipCfg = new HashMap<String, Object>();
    tooltipCfg.put("delay", 100);
    tooltipCfg.put("showURL", false);
    tooltipCfg.put("top", -30);
    tooltipCfg.put("bodyHandler",
            "function() { return $(\"#" + previewScript.getMarkupId(true) + "\").html(); }");
    previewVariable.add(new TooltipBehavior(null, tooltipCfg));

    variableContainer.add(new AjaxLink<Void>("newVariable") {
        @Override
        public void onClick(AjaxRequestTarget target) {

            @SuppressWarnings({ "rawtypes", "unchecked" })
            VariablePanel variablePanel = new VariablePanel("content", new Model(null), questionnaireModel,
                    valueType) {
                @Override
                public void onSave(@SuppressWarnings("hiding") AjaxRequestTarget target,
                        Variable createdVariable) {
                    variables.add(createdVariable);
                    questionnaire.addVariable(createdVariable);
                    variableDropDown.setModelObject(createdVariable);
                    previewVariable.setVisible(true);
                    previewScript.setDefaultModelObject(createdVariable.getAttributeStringValue("script"));
                    variableWindow.close(target);
                    target.addComponent(variableDropDown);
                    target.addComponent(previewVariableVisibility);
                }

                @Override
                public void onCancel(@SuppressWarnings("hiding") AjaxRequestTarget target) {
                    variableWindow.close(target);
                }
            };
            variableWindow.setContent(variablePanel);
            variableWindow.show(target);
        }
    }.add(new Image("newVariableImg", Images.ADD))
            .add(new AttributeModifier("title", true, new ResourceModel("NewVariable"))));

    variableDropDown.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Variable variable = variableDropDown.getModelObject();
            previewVariable.setVisible(variable != null);
            previewScript.setDefaultModelObject(
                    variable == null ? null : variable.getAttributeStringValue("script"));
            target.addComponent(previewVariableVisibility);
        }
    });

    Radio<Type> javascriptType = new Radio<Type>("javascriptType", new Model<Type>(JAVASCRIPT));
    javascriptType.setLabel(new ResourceModel("JavascriptType"));
    validationType.add(javascriptType).add(new SimpleFormComponentLabel("javascriptTypeLabel", javascriptType));

    final TextArea<String> javascriptField = new TextArea<String>("javascriptField",
            new PropertyModel<String>(validator, "script"));
    javascriptField.setOutputMarkupPlaceholderTag(true);
    javascriptField.setVisible(validator.getType() == JAVASCRIPT);
    validationType.add(javascriptField);

    javascriptField.add(new IValidator<String>() {

        @Override
        public void validate(final IValidatable<String> validatable) {
            JavascriptUtils.compile(validatable.getValue(), questionModel.getObject().getName(),
                    ValidationDataSourceWindow.this, form);
        }
    });

    validationType.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Type type = validationType.getModelObject();
            switch (type) {
            case QUESTION_CATEGORY:
                variableDropDown.setModelObject(null);
                javascriptField.setModelObject(null);
                break;
            case VARIABLE:
                questionName.setModelObject(null);
                categoryName.setModelObject(null);
                openAnswerName.setModelObject(null);
                javascriptField.setModelObject(null);
                break;
            case JAVASCRIPT:
                variableDropDown.setModelObject(null);
                questionName.setModelObject(null);
                categoryName.setModelObject(null);
                openAnswerName.setModelObject(null);
                break;
            }
            questionConditionContainer.setVisible(type == QUESTION_CATEGORY);
            variableContainer.setVisible(type == VARIABLE);
            javascriptField.setVisible(type == JAVASCRIPT);
            target.addComponent(questionTypeContainer);
            target.addComponent(variableTypeContainer);
            target.addComponent(javascriptField);
        }
    });

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {

            IDataSource dataSource = null;
            switch (validator.getType()) {
            case QUESTION_CATEGORY:
                Question question = validator.getQuestion();
                OpenAnswerDefinition openAnswer = validator.getOpenAnswer();
                String variableName = openAnswer.getVariableName(question.getName());
                if (StringUtils.isNotBlank(variableName)) {
                    dataSource = new VariableDataSource(questionnaire.getName() + ":" + variableName);
                } else {
                    dataSource = new VariableDataSource(questionnaire.getName() + ":" + question.getName() + "."
                            + validator.getCategory().getName() + "." + openAnswer.getName());
                }
                break;
            case VARIABLE:
                dataSource = new VariableDataSource(
                        questionnaire.getName() + ":" + validator.getVariable().getName());
                break;
            case JAVASCRIPT:
                dataSource = new JavascriptDataSource(validator.getScript(),
                        VariableUtils.convertToValueType(dataType).getName(), questionnaire.getName());
                ((JavascriptDataSource) dataSource)
                        .setSequence(validator.getOperator() == ComparisonOperator.in);
                break;
            }

            ComparingDataSource comparingDataSource = new ComparingDataSource(null, validator.getOperator(),
                    dataSource);
            ValidationDataSourceWindow.this.onSave(target, comparingDataSource);
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

}

From source file:org.obiba.onyx.quartz.editor.question.CopyQuestionPanel.java

License:Open Source License

public CopyQuestionPanel(String id, final IModel<Question> model,
        final IModel<Questionnaire> questionnaireModel, final ModalWindow modalWindow) {
    super(id, model);
    this.questionnaireModel = questionnaireModel;

    final Questionnaire questionnaire = questionnaireModel.getObject();
    final QuestionnaireFinder questionnaireFinder = QuestionnaireFinder.getInstance(questionnaire);
    questionnaire.setQuestionnaireCache(null);

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);//from  ww w. ja  va 2 s .  c o  m

    Form<?> form = new Form<Void>("form");
    form.setMultiPart(false);

    final Question question = model.getObject();
    String newName = new StringResourceModel(COPY_OF, CopyQuestionPanel.this, null,
            new Object[] { question.getName() }).getString();
    name = new TextField<String>("name", new Model<String>(newName));
    name.setLabel(new ResourceModel("Name"));
    name.add(new RequiredFormFieldBehavior());
    name.add(new PatternValidator(QuartzEditorPanel.ELEMENT_NAME_PATTERN));
    name.add(new AbstractValidator<String>() {
        @Override
        protected void onValidate(IValidatable<String> validatable) {
            if (questionnaireFinder.findQuestion(validatable.getValue()) != null) {
                error(validatable, "QuestionAlreadyExists");
            }
        }
    });
    form.add(name);
    form.add(new SimpleFormComponentLabel("nameLabel", name));
    form.add(new HelpTooltipPanel("nameHelp", new ResourceModel("Name.Tooltip")));

    categories = new RadioGroup<CategoryAction>("categories", new Model<CategoryAction>(CategoryAction.SHARE));
    categories.setLabel(new ResourceModel("Categories")).setRequired(true);
    form.add(categories);

    final Radio<CategoryAction> copyCategories = new Radio<CategoryAction>("copyCategories",
            new Model<CategoryAction>(CategoryAction.COPY));
    copyCategories.setLabel(new ResourceModel("Categories.Copy"));
    categories.add(copyCategories).add(new SimpleFormComponentLabel("copyCategoriesLabel", copyCategories));

    final Radio<CategoryAction> shareCategories = new Radio<CategoryAction>("shareCategories",
            new Model<CategoryAction>(CategoryAction.SHARE));
    shareCategories.setLabel(new ResourceModel("Categories.Share"));
    categories.add(shareCategories).add(new SimpleFormComponentLabel("shareCategoriesLabel", shareCategories));

    final DropDownChoice<Page> pageDropDown = new DropDownChoice<Page>("page",
            new Model<Page>(question.getPage()), questionnaire.getPages(),
            new QuestionnaireElementNameRenderer());
    pageDropDown.setRequired(true);
    pageDropDown.setNullValid(false);
    pageDropDown.setLabel(new ResourceModel("Page"));
    form.add(pageDropDown).add(new SimpleFormComponentLabel("pageLabel", pageDropDown));
    form.add(new HelpTooltipPanel("pageHelp", new ResourceModel("Page.Tooltip")));

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            LocaleProperties localeProperties = new LocaleProperties();
            Question copy = copyQuestion(localeProperties);
            pageDropDown.getModelObject().addQuestion(copy);
            try {
                questionnairePersistenceUtils.persist(questionnaire, localeProperties);
                questionnaire.setQuestionnaireCache(null);
                CopyQuestionPanel.this.onSave(target, copy);
                modalWindow.close(target);
            } catch (Exception e) {
                log.error("Cannot persist questionnaire", e);
                error(e.getClass() + ": " + e.getMessage());
                feedbackWindow.setContent(feedbackPanel);
                feedbackWindow.show(target);
            }
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

    add(form);
}

From source file:org.obiba.onyx.quartz.editor.question.QuestionWindow.java

License:Open Source License

public QuestionWindow(String id, final IModel<EditedQuestion> model,
        final IModel<Questionnaire> questionnaireModel, final IModel<LocaleProperties> localePropertiesModel,
        final ModalWindow modalWindow) {
    super(id, model);

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);//  w  ww  . j a  v a 2s.  co  m

    questionTab = new SavableHidableTab(new ResourceModel("Question")) {
        private QuestionPanel questionPanel;

        @Override
        public Panel getPanel(String panelId) {
            if (questionPanel == null) {
                questionPanel = new QuestionPanel(panelId, model, questionnaireModel, localePropertiesModel,
                        feedbackPanel, feedbackWindow, false) {
                    @Override
                    public void onQuestionTypeChange(AjaxRequestTarget target, QuestionType questionType) {
                    }
                };
            }
            return questionPanel;
        }

        @Override
        public void save(AjaxRequestTarget target) {
            questionPanel.onSave(target);
        }

        @Override
        public boolean isVisible() {
            return true;
        }
    };

    conditionTab = new SavableHidableTab(new ResourceModel("Conditions")) {
        private ConditionPanel panel;

        @Override
        public Panel getPanel(String panelId) {
            if (panel == null) {
                panel = new ConditionPanel(panelId, new Model<Question>(model.getObject().getElement()),
                        questionnaireModel);
            }
            return panel;
        }

        @Override
        public void save(AjaxRequestTarget target) {
            if (panel != null)
                panel.onSave(target);
        }

        @Override
        public boolean isVisible() {
            return true;
        }
    };

    AbstractTab attributeTab = new AbstractTab(new ResourceModel("Attributes")) {
        @Override
        public Panel getPanel(String panelId) {
            return new AttributesPanel(panelId, new Model<Question>(model.getObject().getElement()),
                    questionnaireModel.getObject().getLocales(), feedbackPanel, feedbackWindow);
        }
    };

    form = new Form<EditedQuestion>("form", model);
    form.setMultiPart(false);
    localePropertiesUtils.load(localePropertiesModel.getObject(), questionnaireModel.getObject(),
            model.getObject().getElement());

    List<ITab> tabs = new ArrayList<ITab>();
    tabs.add(questionTab);
    tabs.add(attributeTab);
    tabs.add(conditionTab);

    AjaxSubmitTabbedPanel ajaxSubmitTabbedPanel = new AjaxSubmitTabbedPanel("tabs", feedbackPanel,
            feedbackWindow, tabs);
    add(ajaxSubmitTabbedPanel);
    form.add(ajaxSubmitTabbedPanel);
    add(form);

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            questionTab.save(target);
            conditionTab.save(target);
            QuestionWindow.this.onSave(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form1) {
            QuestionWindow.this.onCancel(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

}

From source file:org.obiba.onyx.quartz.editor.questionnaire.UploadQuestionnairePanel.java

License:Open Source License

public UploadQuestionnairePanel(String id, final ModalWindow uploadWindow,
        IModel<Questionnaire> questionnaireModel) {
    super(id);//from  w w w. j  a v a  2s.  c  o  m

    final Questionnaire updatedQuestionnaire = questionnaireModel == null ? null
            : questionnaireModel.getObject();

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);

    zipFile = new FileUploadField("zip");
    zipFile.setLabel(new ResourceModel("File.ZIP"));
    zipFile.setRequired(true);

    Form<?> form = new Form<Void>("form") {
        @Override
        protected void onSubmit() {
            FileUpload zip = zipFile.getFileUpload();
            if (zip == null) {
                error(getLocalizer().getString("Error.NoFileUploaded", UploadQuestionnairePanel.this));
                return;
            }
            String clientFileName = zip.getClientFileName();
            if (!clientFileName.endsWith(".zip")) {
                error(getLocalizer().getString("Error.NotAZipFile", UploadQuestionnairePanel.this));
                return;
            }
            try {
                ZipInputStream zis = new ZipInputStream(zip.getInputStream());
                ZipEntry entry = null;
                Questionnaire questionnaire = null;
                List<File> localeProperties = new ArrayList<File>();
                while ((entry = zis.getNextEntry()) != null) {
                    if (!entry.isDirectory()) {
                        String name = entry.getName();
                        // ONYX-1534 lookup for files anywhere in the file hierarchy
                        if (name.contains("/")) {
                            name = name.substring(name.lastIndexOf('/') + 1);
                        }
                        int n;
                        if ("questionnaire.xml".equals(name)) {
                            ByteArrayOutputStream out = new ByteArrayOutputStream();
                            while ((n = zis.read(BUFFER, 0, BUFFER_SIZE)) > -1) {
                                out.write(BUFFER, 0, n);
                            }
                            questionnaire = questionnaireBundleManager
                                    .load(new ByteArrayInputStream(out.toByteArray()));
                            try {
                                out.close();
                            } catch (Exception e) {
                            }

                            if (updatedQuestionnaire == null) {
                                for (QuestionnaireBundle bundle : questionnaireBundleManager.bundles()) {
                                    if (questionnaire.getName().equals(bundle.getName())) {
                                        error(new StringResourceModel("Error.QuestionnaireAlreadyExists",
                                                UploadQuestionnairePanel.this, null,
                                                new Object[] { questionnaire.getName() }).getString());
                                        return;
                                    }
                                }
                            } else {
                                if (!questionnaire.getName().equals(updatedQuestionnaire.getName())) {
                                    error(new StringResourceModel(
                                            "Error.NameDifferentFromQuestionnaireToUpdate",
                                            UploadQuestionnairePanel.this, null, new Object[] {
                                                    questionnaire.getName(), updatedQuestionnaire.getName() })
                                                            .getString());
                                    return;
                                }
                            }

                        } else if (name.endsWith(".properties")) {
                            File tmp = new File(name);
                            FileOutputStream out = new FileOutputStream(tmp);
                            while ((n = zis.read(BUFFER, 0, BUFFER_SIZE)) > -1) {
                                out.write(BUFFER, 0, n);
                            }
                            localeProperties.add(tmp);
                            try {
                                out.close();
                            } catch (Exception e) {
                            }
                        }
                    }
                    zis.closeEntry();
                }

                if (questionnaire == null) {
                    error(new StringResourceModel("Error.MissingFile", UploadQuestionnairePanel.this, null,
                            new Object[] { "questionnaire.xml" }).getString());
                } else {
                    for (Locale locale : questionnaire.getLocales()) {
                        final String fileName = "language_" + locale.getLanguage() + ".properties";
                        File localeFile = Iterables.find(localeProperties, new Predicate<File>() {
                            public boolean apply(File file) {
                                return file.getName().equals(fileName);
                            }
                        });
                        if (localeFile == null) {
                            error(new StringResourceModel("Error.MissingFile", UploadQuestionnairePanel.this,
                                    null, new Object[] { fileName }).getString());
                        }
                        if (hasError())
                            return;
                    }
                    QuestionnaireBundle bundle = questionnaireBundleManager.createBundle(questionnaire,
                            localeProperties.toArray(new File[localeProperties.size()]));
                    questionnaireBundleManager.flushBundle(bundle);
                    questionnaireRegister.register(questionnaire);
                }

                // cleanup
                new File(clientFileName).delete();
                for (File f : localeProperties) {
                    f.delete();
                }
            } catch (IOException e) {
                log.error("IOException", e);
                error(getLocalizer().getString("Error.CannotReadFile", UploadQuestionnairePanel.this) + ": "
                        + e.getMessage());
            }
        }
    };
    form.setMultiPart(true);
    add(form);
    form.add(zipFile).add(new SimpleFormComponentLabel("zipLabel", zipFile))
            .add(new HelpTooltipPanel("zipHelp", new ResourceModel("File.ZIP.Tooltip")));

    form.add(new SaveCancelPanel("saveCancel", form) {

        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            UploadQuestionnairePanel.this.onSave(target);
            uploadWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            uploadWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });
}