Example usage for org.apache.wicket.markup.html.image Image setVisible

List of usage examples for org.apache.wicket.markup.html.image Image setVisible

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.image Image setVisible.

Prototype

public final Component setVisible(final boolean visible) 

Source Link

Document

Sets whether this component and any children are visible.

Usage

From source file:com.doculibre.constellio.wicket.panels.header.BasePageHeaderPanel.java

License:Open Source License

public static Image newLargeLogo(String id) {
    ResourceReference imageResourceReference = new ResourceReference(
            "logoLarge_" + System.currentTimeMillis()) {
        @Override//from w  ww.  ja v a  2s .  com
        protected Resource newResource() {
            SearchInterfaceConfig searchInterfaceConfig = ConstellioSpringUtils
                    .getSearchInterfaceConfigServices().get();
            Resource imageResource;
            byte[] logoBytes = searchInterfaceConfig.getLogoLargeContent();
            // Convert resource path to absolute path relative to base package
            if (logoBytes != null) {
                imageResource = new ByteArrayResource("image", logoBytes);
            } else {
                imageResource = PackageResource.get(BaseConstellioPage.class, "images/logo_constellio.gif");
            }
            return imageResource;
        }
    };
    Image image = new NonCachingImage(id, imageResourceReference);
    image.setVisible(!ConstellioSession.get().isPortletMode());
    return image;
}

From source file:com.doculibre.constellio.wicket.panels.header.BasePageHeaderPanel.java

License:Open Source License

public static Image newSmallLogo(String id) {
    ResourceReference imageResourceReference = new ResourceReference(
            "logoSmall_" + System.currentTimeMillis()) {
        @Override//from ww  w.  ja  v  a 2 s  . co m
        protected Resource newResource() {
            SearchInterfaceConfig searchInterfaceConfig = ConstellioSpringUtils
                    .getSearchInterfaceConfigServices().get();
            Resource imageResource;
            byte[] logoBytes = searchInterfaceConfig.getLogoSmallContent();
            // Convert resource path to absolute path relative to base package
            if (logoBytes != null) {
                imageResource = new ByteArrayResource("image", logoBytes);
            } else {
                imageResource = PackageResource.get(BaseConstellioPage.class, "images/logo_petit.png");
            }
            return imageResource;
        }
    };
    Image image = new NonCachingImage(id, imageResourceReference);
    image.setVisible(!ConstellioSession.get().isPortletMode());
    return image;
}

From source file:nl.knaw.dans.dccd.web.search.DccdHitPanel.java

License:Apache License

/**
 * display the search result//  w  w w.  j av  a2  s. co  m
 * get all information to display from the SearchBean
 * instead of from the Project and it's Tridas
 *
 * @param dccdHit
 */
private void init(final DccdSB dccdHit) {
    Link viewResultLink = new Link("viewResult") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick() {
            // now navigate to view page with given project;
            retrieveProjectAndObject(dccdHit);
            // Note: could also give selected entity object!
            String selectedEntityId = object.getId();

            setResponsePage(new ProjectViewPage(project, selectedEntityId));
        }
    };
    add(viewResultLink);

    addObjectInformation(viewResultLink, dccdHit);
    addProjectInformation(viewResultLink, dccdHit);

    boolean hasMarkerOnMap = false;
    if (dccdHit.hasLatLng()) {
        //Check for permission
        DccdUser user = (DccdUser) ((DccdSession) getSession()).getUser();
        ProjectPermissionLevel effectivelevel = dccdHit.getEffectivePermissionLevel(user);
        Boolean isAllowedToViewLocation = ProjectPermissionLevel.OBJECT.isPermittedBy(effectivelevel);
        hasMarkerOnMap = isAllowedToViewLocation;
    }
    // add location marker icon
    ResourceReference markerIconImageReference = GeoViewer.getDefaultMarkerIconImageReference();
    if (hasMarkerOnMap) {
        // use index specific marker icon image
        int latLngMarkerIndex = dccdHit.latLngMarkerIndex;
        logger.debug("Marker index to use on HitPanel: " + latLngMarkerIndex);
        if (latLngMarkerIndex >= 0)
            markerIconImageReference = GeoViewer.getLetterMarkerIconImageReference(latLngMarkerIndex);
    }
    Image geoMarkerIconImage = new Image("geoMarkerIconImage", markerIconImageReference);
    viewResultLink.add(geoMarkerIconImage);
    // only show icon if marker is on the map
    geoMarkerIconImage.setVisible(hasMarkerOnMap);
}

From source file:nl.knaw.dans.dccd.web.search.DccdProjectHitPanel.java

License:Apache License

private void addProjectInformation(final DccdProjectSB dccdHit) {
    String projectTitleStr = dccdHit.getTridasProjectTitle();//tridasProject.getTitle();
    //add(new Label("project_title", projectTitleStr));

    // Make a link to the project view page
    // Put it on the whole panel
    Link viewLink = new Link("project_view")//, new Model(resultItem))
    {/*from  w w w.  j  a  v  a 2 s . c o m*/
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick() {
            // now navigate to view page with given project;
            retrieveProject(dccdHit);
            setResponsePage(new ProjectViewPage(project));
        }
    };
    add(viewLink);
    //viewLink.add(new Label("project_title",projectTitleStr));

    // Show status, ProjectHits are shown only to the Manager(MyProjects) or admin?, 
    // so we don't need to check here
    //viewLink.add(new Label("project_status_value", dccdHit.getAdministrativeState()));
    viewLink.add(new Label("project_status_value",
            new StringResourceModel("datasetState.${administrativeState}", this, new Model(dccdHit))));

    // TODO show administrativeMetadata.lastStateChange

    // using the title as link text LOOKS NORMAL TO THE USER
    Link viewLinkOnTitle = new Link("project_title_view")//, new Model(resultItem))
    {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick() {
            // now navigate to view page with given project;
            retrieveProject(dccdHit);
            setResponsePage(new ProjectViewPage(project));
        }
    };
    viewLinkOnTitle.add(new Label("project_title", projectTitleStr));
    viewLink.add(viewLinkOnTitle);

    //ID: <project identifier> (domain: <project domain>)
    String identifierStr = "";
    if (dccdHit.hasTridasProjectIdentifier())
        identifierStr = dccdHit.getTridasProjectIdentifier();
    String domainStr = "";
    if (dccdHit.hasTridasProjectIdentifierDomain())
        domainStr = dccdHit.getTridasProjectIdentifierDomain();
    viewLink.add(new Label("identifier", identifierStr));
    Label domainLabel = new Label("domain", domainStr);
    viewLink.add(domainLabel);

    //Lab(s): <lab name>, <lab place>, <lab country>
    viewLink.add(new Label("project_laboratory", DccdHitPanel.getProjectLabString(dccdHit)));

    // investigator
    String projectInvestigatorStr = "";
    if (dccdHit.hasTridasProjectInvestigator()) {
        projectInvestigatorStr = dccdHit.getTridasProjectInvestigator();
    }
    viewLink.add(new Label("project_investigator", projectInvestigatorStr));
    //Type(s): <type normal>
    viewLink.add(new Label("project_type", DccdHitPanel.getProjectTypeString(dccdHit)));
    //Category: <category normal>
    viewLink.add(new Label("project_category", DccdHitPanel.getProjectCategoryString(dccdHit)));
    //<project description>
    viewLink.add(new Label("project_description", DccdHitPanel.getProjectDescriptionString(dccdHit)));

    // add location marker icon
    // You always have Permission on the MyProjects Page!
    boolean hasMarkerOnMap = dccdHit.hasLatLng();
    ResourceReference markerIconImageReference = GeoViewer.getDefaultMarkerIconImageReference();
    if (hasMarkerOnMap) {
        // use index specific marker icon image
        int latLngMarkerIndex = dccdHit.latLngMarkerIndex;
        logger.debug("Marker index to use on HitPanel: " + latLngMarkerIndex);
        if (latLngMarkerIndex >= 0)
            markerIconImageReference = GeoViewer.getLetterMarkerIconImageReference(latLngMarkerIndex);
    }
    Image geoMarkerIconImage = new Image("geoMarkerIconImage", markerIconImageReference);
    viewLink.add(geoMarkerIconImage);
    // only show icon if marker is on the map
    geoMarkerIconImage.setVisible(hasMarkerOnMap);
}

From source file:org.dcm4chee.web.war.tc.TCCaseViewPage.java

License:LGPL

@SuppressWarnings("serial")
public TCCaseViewPage(PageParameters params) {
    super(params);

    if (StudyPermissionHelper.get().isSSO()) {
        add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1)) {
            private static final long serialVersionUID = 1L;

            @Override/*from w w w  .ja  v  a  2s.c o m*/
            protected void onTimer(AjaxRequestTarget arg0) {
                try {
                    StudyPermissionHelper.get().doDicomAuthentication();
                } catch (Exception e) {
                    log.error(getClass().getName() + ": error doing dicom authentication: ", e);
                } finally {
                    this.stop();
                }
            }
        });
    }

    add(TCEnvironment.getCSSHeaderContributor());

    add((popupManager = new TCPopupManager()).getGlobalHideOnOutsideClickHandler());

    add(new Label("tc-casepage-title", TCUtilities.getLocalizedString("tc.casepage.title")));

    String uid = params.getString("uid");
    if (uid != null) {
        TCQueryLocal dao = (TCQueryLocal) JNDIUtils.lookup(TCQueryLocal.JNDI_NAME);

        Instance instance = dao.findInstanceByUID(uid);

        final Image logo = new Image("img_logo",
                new ResourceReference(ModuleSelectorPanel.class, "images/logo.gif"));
        logo.setOutputMarkupId(true);
        logo.setVisible(false);
        add(logo);

        if (instance != null) {
            try {
                final TCViewPanel panel = new TCViewPanel("tc-case", new TCModel(instance),
                        new TCAttributeVisibilityStrategy(new Model<Boolean>(false)) {
                            @Override
                            public boolean isAttributeVisible(TCAttribute attr) {
                                if (TCEnvironment.isPrincipalAuthorized("TCViewRestricted")) {
                                    return true;
                                }

                                return !attr.isRestricted();
                            }
                        }, null);

                add(panel);

                add(getErrorComponent(null));

                logo.setVisible(true);

                add(new HeaderContributor(new IHeaderContributor() {
                    public void renderHead(IHeaderResponse response) {
                        StringBuilder js = new StringBuilder();
                        js.append("updateTCViewDialog(true);");
                        js.append(panel.getDisableTabsJavascript());
                        js.append(panel.getHideTabsJavascript());

                        response.renderOnDomReadyJavascript(js.toString());
                    }
                }));
            } catch (Exception e) {
                add(new WebMarkupContainer("tc-case").setVisible(false));
                add(getErrorComponent(TCUtilities.getLocalizedString("tc.casepage.error.text")));
                log.error(null, e);
            }
        } else {
            add(new WebMarkupContainer("tc-case").setVisible(false));
            add(getErrorComponent(MessageFormat
                    .format(TCUtilities.getLocalizedString("tc.casepage.casenotfound.text"), uid)));
        }
    } else {
        add(new WebMarkupContainer("tc-case").setVisible(false));
        add(getErrorComponent(TCUtilities.getLocalizedString("tc.casepage.casenotspecified.text")));
    }
}

From source file:org.headsupdev.agile.web.components.issues.IssuePanelRow.java

License:Open Source License

public IssuePanelRow(String id, Issue issue, final HeadsUpPage page, final boolean hideProject,
        final boolean hideMilestone, boolean hideAssignee) {
    super(id);//from w ww  .ja  v  a2 s.  com
    issue = (Issue) ((HibernateStorage) Manager.getStorageInstance()).getHibernateSession().load(Issue.class,
            issue.getInternalId());
    this.issue = issue;
    User currentUser = page.getSession().getUser();
    add(CSSPackageResource.getHeaderContribution(getClass(), "issue.css"));

    final boolean timeEnabled = Boolean.parseBoolean(
            page.getProject().getConfigurationValue(StoredProject.CONFIGURATION_TIMETRACKING_ENABLED));

    PageParameters params = new PageParameters();
    params.add("project", issue.getProject().getId());
    params.add("id", String.valueOf(issue.getId()));

    WebMarkupContainer cell = new WebMarkupContainer("id-cell");

    Class<? extends Page> viewClass = page.getPageClass("issues/view");

    if (viewClass != null) {
        Link idLink = new BookmarkablePageLink("id-link", viewClass, params);
        idLink.add(new Label("id-label", String.valueOf(issue.getId())));
        cell.add(idLink);
        cell.add(new WebMarkupContainer("id-label").setVisible(false));
    } else {
        cell.add(new WebMarkupContainer("id-link").setVisible(false));
        cell.add(new Label("id-label", String.valueOf(issue.getId())));
    }
    add(cell);

    cell = new WebMarkupContainer("summary-cell");

    if (viewClass != null) {
        Link summaryLink = new BookmarkablePageLink("summary-link", viewClass, params);
        summaryLink.add(new Label("summary-label", issue.getSummary()));
        cell.add(summaryLink);
        cell.add(new WebMarkupContainer("summary-label").setVisible(false));
    } else {
        cell.add(new WebMarkupContainer("summary-link").setVisible(false));
        cell.add(new Label("summary-label", issue.getSummary()));
    }
    add(cell);

    Label label = new Label("project", (issue.getProject() == null) ? "" : issue.getProject().toString());
    add(label.setVisible(!hideProject));

    add(new Label("order", issue.getOrder() == null ? "" : String.valueOf(issue.getOrder())));
    add(new Label("status", IssueUtils.getStatusDescription(issue)));

    WebMarkupContainer type = new WebMarkupContainer("type");
    add(type);
    final String issueType = IssueUtils.getTypeName(issue.getType());
    String typeIcon = "type/" + issueType + ".png";
    type.add(new Image("type-icon", new ResourceReference(IssueListPanel.class, typeIcon))
            .add(new AttributeModifier("alt", true, new Model<String>() {
                @Override
                public String getObject() {
                    return issueType;
                }
            })).add(new AttributeModifier("title", true, new Model<String>() {
                @Override
                public String getObject() {
                    return issueType;
                }
            })));

    String image = null;
    switch (issue.getPriority()) {
    case Issue.PRIORITY_BLOCKER:
        image = "blocker.png";
        break;
    case Issue.PRIORITY_CRITICAL:
        image = "critical.png";
        break;
    case Issue.PRIORITY_MINOR:
        image = "minor.png";
        break;
    case Issue.PRIORITY_TRIVIAL:
        image = "trivial.png";
        break;
    }
    if (image == null) {
        WebMarkupContainer ico = new WebMarkupContainer("priority-icon");
        ico.setVisible(false);
        type.add(ico);
    } else {
        type.add(new Image("priority-icon", new ResourceReference(IssueListPanel.class, image)));
    }

    if (((HibernateStorage) Manager.getStorageInstance()).getResourceManager().isIssueMissingEstimate(issue)) {
        if (((HibernateStorage) Manager.getStorageInstance()).getResourceManager()
                .isIssueSeriouslyMissingEstimate(issue)) {
            type.add(new Image("overworked-icon", new ResourceReference(HeadsUpPage.class, "images/fail.png")));
        } else {
            type.add(new Image("overworked-icon", new ResourceReference(HeadsUpPage.class, "images/warn.png")));
        }
    } else {
        type.add(new WebMarkupContainer("overworked-icon").setVisible(false));
    }

    boolean attachments = issue.getAttachments().size() > 0;
    Image attachImage = new Image("attachment-icon", new ResourceReference(IssueListPanel.class, "attach.png"));
    type.add(attachImage.setVisible(attachments));

    cell = new WebMarkupContainer("assigned-cell");
    if (!hideAssignee) {
        if (issue.getAssignee() != null) {
            params = new PageParameters();
            params.add("project", issue.getProject().getId());
            params.add("username", issue.getAssignee().getUsername());

            Class<? extends Page> userClass = page.getPageClass("account");
            if (userClass != null) {
                cell.add(new GravatarLinkPanel("gravatar", issue.getAssignee(),
                        HeadsUpPage.SMALL_AVATAR_EDGE_LENGTH));
                Link assignedLink = new BookmarkablePageLink("assigned-link", userClass, params);
                assignedLink.add(new Label("assigned-label", issue.getAssignee().getFullnameOrUsername()));
                cell.add(assignedLink);
                cell.add(new WebMarkupContainer("assigned-label").setVisible(false));
                cell.add(new WebMarkupContainer("assign-link").setVisible(false));
                cell.add(new WebMarkupContainer("assign-choice").setVisible(false));
            } else {
                cell.add(new WebMarkupContainer("gravatar").setVisible(false));
                cell.add(new WebMarkupContainer("assigned-link").setVisible(false));
                cell.add(new Label("assigned-label", issue.getAssignee().getFullnameOrUsername()));
                cell.add(new WebMarkupContainer("assign-link").setVisible(false));
                cell.add(new WebMarkupContainer("assign-choice").setVisible(false));
            }
        } else {
            final UserDropDownChoice assignChoice = new UserDropDownChoice("assign-choice") {
                @Override
                protected boolean wantOnSelectionChangedNotifications() {
                    return true;
                }

                @Override
                protected void onSelectionChanged(User newSelection) {
                    IssuePanelRow.this.issue = (Issue) ((HibernateStorage) Manager.getStorageInstance())
                            .getHibernateSession().merge(IssuePanelRow.this.issue);

                    // if we have an assignee that is not watching then add them to the watchers
                    if (newSelection != null
                            && !IssuePanelRow.this.issue.getWatchers().contains(newSelection)) {
                        IssuePanelRow.this.issue.getWatchers().add(newSelection);
                    }

                    IssuePanelRow.this.issue.setAssignee(newSelection);
                }
            };
            assignChoice.setModel(new PropertyModel<User>(issue, "assignee"));
            Link assignLink = new AjaxFallbackLink("assign-link") {
                @Override
                public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                    this.setVisible(false);
                    ajaxRequestTarget.addComponent(this);
                    assignChoice.setVisible(true);
                    ajaxRequestTarget.addComponent(assignChoice);
                }
            };

            cell.add(assignLink.setOutputMarkupId(true)
                    .setVisible(Permissions.canEditIssue(currentUser, page.getProject())));
            cell.add(new WebMarkupContainer("gravatar").setVisible(false));
            cell.add(
                    assignChoice.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));
            cell.add(new WebMarkupContainer("assigned-label").setVisible(false));
            cell.add(new WebMarkupContainer("assigned-link").setVisible(false));
        }
    } else {
        cell.add(new WebMarkupContainer("gravatar").setVisible(false));
        cell.add(new WebMarkupContainer("assigned-link").setVisible(false));
        cell.add(new WebMarkupContainer("assigned-label").setVisible(false));
        cell.add(new WebMarkupContainer("assign-link").setVisible(false));
        cell.add(new WebMarkupContainer("assign-choice").setVisible(false));
    }
    add(cell.setVisible(!hideAssignee));

    cell = new WebMarkupContainer("milestone-cell");
    Milestone milestone = issue.getMilestone();
    if (milestone == null) {
        cell.add(new WebMarkupContainer("milestone-link").setVisible(false));
        cell.add(new WebMarkupContainer("milestone-label").setVisible(false));

        final MilestoneDropDownChoice milestoneChoice = new MilestoneDropDownChoice("setmilestone-choice",
                issue.getProject()) {
            @Override
            protected boolean wantOnSelectionChangedNotifications() {
                return true;
            }

            @Override
            protected void onSelectionChanged(Milestone newSelection) {
                IssuePanelRow.this.issue = (Issue) ((HibernateStorage) Manager.getStorageInstance())
                        .getHibernateSession().merge(IssuePanelRow.this.issue);

                Milestone newMilestone = (Milestone) ((HibernateStorage) Manager.getStorageInstance())
                        .getHibernateSession().merge(newSelection);
                IssuePanelRow.this.issue.setMilestone(newMilestone);
            }
        };
        milestoneChoice.setModel(new PropertyModel<Milestone>(issue, "milestone"));
        Link setMilestoneLink = new AjaxFallbackLink("setmilestone-link") {
            @Override
            public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                this.setVisible(false);
                ajaxRequestTarget.addComponent(this);
                milestoneChoice.setVisible(true);
                ajaxRequestTarget.addComponent(milestoneChoice);
            }
        };

        cell.add(setMilestoneLink.setOutputMarkupId(true)
                .setVisible(Permissions.canEditIssue(currentUser, page.getProject())));
        cell.add(milestoneChoice.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));
    } else {
        params = new PageParameters();
        params.add("project", milestone.getProject().getId());
        params.add("id", milestone.getName());

        Class<? extends Page> milestoneClass = page.getPageClass("milestones/view");
        if (milestoneClass != null) {
            Link milestoneLink = new BookmarkablePageLink("milestone-link", milestoneClass, params);
            milestoneLink.add(new Label("milestone-label", milestone.toString()));
            cell.add(milestoneLink);
            cell.add(new WebMarkupContainer("milestone-label").setVisible(false));
        } else {
            cell.add(new WebMarkupContainer("milestone-link").setVisible(false));
            cell.add(new Label("milestone-label", milestone.toString()));
        }

        cell.add(new WebMarkupContainer("setmilestone-link").setVisible(false));
        cell.add(new WebMarkupContainer("setmilestone-choice").setVisible(false));
    }
    add(cell.setVisible(!hideMilestone));

    cell = new WebMarkupContainer("hours-cell");
    cell.add(new Label("hours", new IssueHoursRemainingModel(issue)));
    add(cell.setVisible(timeEnabled));
}

From source file:org.jabylon.rest.ui.wicket.panels.ProjectResourcePanel.java

License:Open Source License

protected Item<?> addCSSIcon(String icon) {
    WebMarkupContainer markupContainer = new WebMarkupContainer("css-icon");
    item.add(markupContainer);/*from  w  ww .java  2s. co  m*/
    markupContainer.add(new AttributeModifier("class", icon));
    Image image = new Image("regular-image", "not-there.gif");
    image.setVisible(false);
    item.add(image);
    return item;
}

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);/*from w ww . j a va2  s .  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.condition.ConditionPanel.java

License:Open Source License

public ConditionPanel(String id, final IModel<Question> questionModel,
        final IModel<Questionnaire> questionnaireModel) {
    super(id);//from w w  w.  jav  a 2 s. c  o m
    this.questionModel = questionModel;
    this.questionnaireModel = questionnaireModel;

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

    variableWindow = new ModalWindow("variableWindow");
    variableWindow.setCssClassName("onyx");
    variableWindow.setInitialWidth(950);
    variableWindow.setInitialHeight(540);
    variableWindow.setResizable(true);
    variableWindow.setTitle(new ResourceModel("Variable"));
    add(variableWindow);

    add(new MultiLineLabel("explain", new ResourceModel("Explain")));

    Condition condition = new Condition();

    final Question question = questionModel.getObject();

    final Questionnaire questionnaire = questionnaireModel.getObject();
    QuestionnaireFinder questionnaireFinder = QuestionnaireFinder.getInstance(questionnaire);
    questionnaireFinder.buildQuestionnaireCache(); // need a fresh cache

    final IDataSource initialCondition = question.getCondition();
    if (initialCondition != null) {
        if (initialCondition instanceof VariableDataSource) {
            VariableDataSource variableDataSource = (VariableDataSource) initialCondition;
            if (questionnaire.getName().equals(variableDataSource.getTableName())) {
                try {
                    condition.setVariable(questionnaire.getVariable(variableDataSource.getVariableName()));
                    condition.setType(Type.VARIABLE);
                } catch (IllegalArgumentException e) {
                    // not found in this questionnaire
                }
            }
            if (condition.getType() == NONE) { // not found yet
                Variable variable = variableUtils.findVariable(variableDataSource);
                if (variable != null) {
                    try {
                        condition.setVariable(questionnaire.getVariable(variable.getName()));
                        condition.setType(Type.VARIABLE);
                    } catch (IllegalArgumentException e) {
                        // not found
                        Question questionCondition = VariableUtils.findQuestion(variable, questionnaireFinder);
                        condition.setType(Type.QUESTION_CATEGORY);
                        condition.setQuestion(questionCondition);
                        condition.setCategory(VariableUtils.findCategory(variable, questionCondition));
                    }
                }
            }
        } else if (initialCondition instanceof JavascriptDataSource) {
            condition.setType(JAVASCRIPT);
            condition.setScript(((JavascriptDataSource) initialCondition).getScript());
        }
    }

    Model<Condition> model = new Model<Condition>(condition);
    setDefaultModel(model);

    final Form<Void> form = new Form<Void>("form");
    add(form);

    final RadioGroup<Type> conditionType = new RadioGroup<Type>("conditionType",
            new PropertyModel<Type>(model, "type"));
    conditionType.setLabel(new ResourceModel("ConditionType")).setRequired(true);
    form.add(conditionType);

    final Radio<Type> noneType = new Radio<Type>("none", new Model<Type>(NONE));
    noneType.setLabel(new ResourceModel("NoCondition"));
    conditionType.add(noneType).add(new SimpleFormComponentLabel("noneLabel", noneType));

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

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

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

    final List<Question> questions = new ArrayList<Question>(Collections2.filter(
            questionnaire.getQuestionnaireCache().getQuestionCache().values(), new Predicate<Question>() {
                @Override
                public boolean apply(Question q) {
                    return !q.equals(question) && q.getType() != QuestionType.BOILER_PLATE;
                }
            }));
    Collections.sort(questions, new QuestionnaireElementComparator());

    questionName = new DropDownChoice<Question>("question", new PropertyModel<Question>(model, "question"),
            questions, new QuestionnaireElementNameRenderer()) {
        @Override
        public boolean isRequired() {
            return conditionType.getModelObject() == QUESTION_CATEGORY;
        }
    };

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

    final List<Category> categories = findCategories();
    final DropDownChoice<Category> categoryName = new DropDownChoice<Category>("category",
            new PropertyModel<Category>(model, "category"), categories,
            new QuestionnaireElementNameRenderer()) {
        @Override
        public boolean isRequired() {
            return conditionType.getModelObject() == QUESTION_CATEGORY;
        }
    };
    categoryName.setLabel(new ResourceModel("Category"));
    categoryName.setNullValid(false);
    questionConditionContainer.add(categoryName)
            .add(new SimpleFormComponentLabel("categoryLabel", categoryName));

    questionName.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            categories.clear();
            categories.addAll(findCategories());
            target.addComponent(categoryName);
        }
    });

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

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

    final WebMarkupContainer variableContainer = new WebMarkupContainer("variableContainer");
    variableContainer.setVisible(condition.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) {
                    return v.getValueType().equals(BooleanType.get());
                }
            }));

    final DropDownChoice<Variable> variableDropDown = new DropDownChoice<Variable>("variable",
            new PropertyModel<Variable>(model, "variable"), variables, new VariableRenderer()) {
        @Override
        public boolean isRequired() {
            return conditionType.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,
                    BooleanType.get()) {
                @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"));
    conditionType.add(javascriptType).add(new SimpleFormComponentLabel("javascriptTypeLabel", javascriptType));

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

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

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

    conditionType.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Type type = conditionType.getModelObject();
            switch (type) {
            case NONE:
                questionName.setModelObject(null);
                categoryName.setModelObject(null);
                variableDropDown.setModelObject(null);
                javascriptField.setModelObject(null);
                break;
            case QUESTION_CATEGORY:
                variableDropDown.setModelObject(null);
                javascriptField.setModelObject(null);
                break;
            case VARIABLE:
                questionName.setModelObject(null);
                categoryName.setModelObject(null);
                javascriptField.setModelObject(null);
                break;
            case JAVASCRIPT:
                questionName.setModelObject(null);
                categoryName.setModelObject(null);
                variableDropDown.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);
        }
    });

}

From source file:org.obiba.onyx.wicket.link.AbstractImageLink.java

License:Open Source License

/**
 * Hide image tag./*from   w  w w  .ja va2s .  com*/
 */
private void addNoDecorator() {
    Image image = new Image("decorator");
    image.setVisible(false);
    link.add(image);
}