Example usage for org.apache.wicket Component setOutputMarkupId

List of usage examples for org.apache.wicket Component setOutputMarkupId

Introduction

In this page you can find the example usage for org.apache.wicket Component setOutputMarkupId.

Prototype

public final Component setOutputMarkupId(final boolean output) 

Source Link

Document

Sets whether or not component will output id attribute into the markup.

Usage

From source file:org.jaulp.wicket.behaviors.JqueryStatementsBehavior.java

License:Apache License

public CharSequence createRenderedStatement(Component component) {
    component.setOutputMarkupId(true);
    JsStatement statement = new JsStatement().$(component);
    for (ChainableStatement defaultChainableStatement : chainableStatement) {
        statement.chain(defaultChainableStatement);
    }/*  w  w  w.  j  ava  2  s  .  c  om*/
    this.renderedStatement = statement.render();
    this.rendered = true;
    return this.renderedStatement;
}

From source file:org.obiba.onyx.webapp.administration.page.AdministrationPage.java

License:Open Source License

public AdministrationPage() {

    AjaxLink<?> userTab = new AdminTab("userTab") {

        @Override//from w  w  w . j  av  a  2  s .  c  o m
        public Component getTabComponent() {
            return new UserSearchPanel(getContentId());
        }

    };
    add(userTab.setOutputMarkupId(true));
    links.add(userTab);

    AjaxLink<?> dataTab = new AdminTab("dataTab") {

        @Override
        public Component getTabComponent() {
            return new DataManagementPanel(getContentId());
        }

    };
    add(dataTab.setOutputMarkupId(true));
    links.add(dataTab);

    AjaxLink<?> editorTab = new EditorTab("editorTab") {

        @Override
        public Component getTabComponent() {
            for (Module module : moduleRegistry.getModules()) {
                Component editorComponent = module.getEditorPanel(getContentId());
                if (editorComponent != null)
                    return editorComponent;
            }
            return null;
        }

    };
    add(editorTab.setOutputMarkupId(true));
    links.add(editorTab);

    AjaxLink<?> devTab = new AdminTab("devTab") {

        @Override
        public Component getTabComponent() {
            return new DevelopersPanel(getContentId());
        }

        @Override
        public boolean isVisible() {
            return ((OnyxApplication) WebApplication.get()).isDevelopmentMode();
        }
    };
    add(devTab.setOutputMarkupId(true));
    links.add(devTab);

    // Display first permitted tab
    for (AjaxLink<?> link : links) {
        if (link.isActionAuthorized(new Action(Action.RENDER))) {
            Component tabComponent = ((Link) link).getTabComponent();
            add(tabComponent.setOutputMarkupId(true));
            link.add(new AttributeModifier("class", true,
                    new Model<String>("obiba-button ui-corner-all selected")));
            break;
        }
    }

}

From source file:org.obiba.onyx.webapp.administration.page.AdministrationPage.java

License:Open Source License

private void replaceContent(AjaxRequestTarget target, Component content) {
    content.setOutputMarkupId(true);
    addOrReplace(content);//from   w ww .  jav a  2 s.  c o  m
    target.appendJavascript(
            "$(document).ready(function () {$('.obiba-content-region').each(function() {$(this).addClass('ui-corner-all');});});");
    target.appendJavascript(
            "$(document).ready(function () {$('.obiba-button').each(function() {$(this).addClass('ui-corner-all');});});");
    target.addComponent(content);
}

From source file:org.objetdirect.wickext.core.commons.JavaScriptBuilder.java

License:Open Source License

/**
 * Builds a new instance of {@link JavaScriptBuilder} with the given 
 * {@link Component}.// www .j ava 2 s  .  com
 * @param component the component on which this statement applies.
 */
public JavaScriptBuilder(Component component) {
    this();
    this.component = component;
    // we force to output the markup id 
    // (very useful to retreive it in JavaScript)
    component.setOutputMarkupId(true);
}

From source file:org.odlabs.wiquery.core.WiQueryPluginInstantiationListener.java

License:Open Source License

public void onInstantiation(Component component) {
    if (component instanceof IWiQueryPlugin)
        component.setOutputMarkupId(true);
}

From source file:org.odlabs.wiquery.ui.themes.ThemeUiHelper.java

License:Open Source License

/**
 * Method to get the {@link JsStatement} to insert the hover style on your
 * {@link Component}//w w w.  j  a va  2  s  . c om
 * 
 * @param component
 *            Wicket component
 * @return the JsStatement
 */
public static JsStatement hover(Component component) {
    component.setOutputMarkupId(true);
    return new JsQuery(component).$().chain("hover", "function() { $(this).addClass('ui-state-hover'); }",
            "function() { $(this).removeClass('ui-state-hover'); }");
}

From source file:org.onexus.ui.authentication.persona.SignOutBehavior.java

License:Apache License

@Override
public void renderHead(final Component component, final IHeaderResponse response) {
    component.setOutputMarkupId(true);
    super.renderHead(component, response);

    final Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("componentId", component.getMarkupId());
    BrowserId personaId = SessionHelper.getBrowserId(Session.get());
    String userName = personaId == null ? "" : personaId.getEmail();
    variables.put("userName", userName);
    variables.put("callbackUrl", getCallbackUrl());

    final TextTemplate verifyTemplate = new PackageTextTemplate(VerifyBehavior.class, "signout.js.tmpl");
    String asString = verifyTemplate.asString(variables);

    response.render(GuestPanel.INCLUDE);
    response.render(OnDomReadyHeaderItem.forScript(asString));

}

From source file:org.onexus.ui.authentication.persona.VerifyBehavior.java

License:Apache License

@Override
public void renderHead(final Component component, final IHeaderResponse response) {
    component.setOutputMarkupId(true);
    super.renderHead(component, response);

    final Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("componentId", component.getMarkupId());
    variables.put("callbackUrl", getCallbackUrl());

    final TextTemplate verifyTemplate = new PackageTextTemplate(VerifyBehavior.class, "verify.js.tmpl");
    String asString = verifyTemplate.asString(variables);
    response.render(OnDomReadyHeaderItem.forScript(asString));
}

From source file:org.opensingular.form.wicket.IWicketComponentMapper.java

License:Apache License

default void addAjaxUpdate(Component component, IModel<SInstance> model, IAjaxUpdateListener listener) {
    component.setOutputMarkupId(true);
    adjustJSEvents(component);/*from w ww . ja v  a2  s. co m*/
    new AjaxUpdateListenersFactory().getBehaviorsForm(component, model, listener).stream()
            .forEach(component::add);
}

From source file:org.patientview.radar.web.panels.firstvisit.ClinicalPicturePanel.java

License:Open Source License

public ClinicalPicturePanel(String id, final IModel<Long> radarNumberModel, final boolean isFirstVisit) {

    super(id);/*www  .j  a va 2  s.c  o  m*/
    setOutputMarkupId(true);
    setOutputMarkupPlaceholderTag(true);

    // set srns elements to hide
    srnsElementsToHide = Arrays.asList(URTICARIA_CONTAINER_ID, URTICARIA_DETAIL_CONTAINER_ID,
            PARTIAL_LIPODYSTROPHY_CONTAINER_ID, PRECEEDING_INFECTION_CONTAINER_ID,
            PRECEEDING_INFECTION_DETAIL_CONTAINER_ID, CHRONIC_INFECTION_ACTIVE_CONTAINER_ID,
            CHRONIC_INFECTION_DETAIL_CONTAINER_ID);

    // set mpgn elements to hide
    mpgnElementsToHide = Arrays.asList(THROMBOSIS_CONTAINER_ID, PERITONITIS_CONTAINER_ID,
            PULMONARY_OEDEMA_CONTAINER_ID, DIABETES_TYPE_CONTAINER_ID, RASH_CONTAINER_ID,
            RASH_DETAIL_CONTAINER_ID, POSSIBLE_IMMUNISATION_TRIGGER_CONTAINER_ID, PHENOTYPE_CONTAINER_1,
            PHENOTYPE_CONTAINER_2, PHENOTYPE_CONTAINER_3, PHENOTYPE_CONTAINER_4);

    // set srns elements to hide on follow up
    srnsElementsToHideFollowup = Arrays.asList(PATIENT_DETAILS_CONTAINER);

    final WebMarkupContainer clinicalPictureContainer = new WebMarkupContainer("clinicalPictureContainer");
    clinicalPictureContainer.setVisible(isFirstVisit);
    clinicalPictureContainer.setOutputMarkupId(true);
    clinicalPictureContainer.setOutputMarkupPlaceholderTag(true);
    add(clinicalPictureContainer);

    final TextField<Double> diastolicBloodPressure = new TextField<Double>("diastolicBloodPressure");

    final CompoundPropertyModel<ClinicalData> firstVisitModel = new CompoundPropertyModel<ClinicalData>(
            new LoadableDetachableModel<ClinicalData>() {
                @Override
                protected ClinicalData load() {
                    if (radarNumberModel.getObject() != null) {
                        // If we have a radar number get the list from DAO
                        ClinicalData clinicalData;
                        clinicalData = clinicalDataManager
                                .getFirstClinicalDataByRadarNumber(radarNumberModel.getObject());

                        if (clinicalData != null) {
                            return clinicalData;
                        }
                    }
                    // By default just return new one
                    ClinicalData clinicalDataNew = new ClinicalData();
                    clinicalDataNew.setSequenceNumber(1);
                    return clinicalDataNew;
                }
            });

    final IModel<ClinicalData> followUpModel = new LoadableDetachableModel<ClinicalData>() {
        private Long id;

        @Override
        protected ClinicalData load() {
            if (id == null) {
                return new ClinicalData();
            } else {
                return clinicalDataManager.getClinicalData(id);
            }
        }

        @Override
        public void detach() {
            ClinicalData clinicalData = getObject();
            if (clinicalData != null) {
                id = clinicalData.getId();
            }
            super.detach();
        }
    };

    final IModel<ClinicalData> formModel;
    if (isFirstVisit) {
        formModel = firstVisitModel;
    } else {
        formModel = new CompoundPropertyModel<ClinicalData>(followUpModel);
    }

    IModel<List> clinicalPictureListModel = new AbstractReadOnlyModel<List>() {
        @Override
        public List getObject() {

            if (radarNumberModel.getObject() != null) {
                List list = clinicalDataManager.getClinicalDataByRadarNumber(radarNumberModel.getObject());
                return !list.isEmpty() ? list : Collections.emptyList();
            }

            return Collections.emptyList();
        }
    };

    WebMarkupContainer followupContainer = new WebMarkupContainer("followupContainer");
    followupContainer.setVisible(!isFirstVisit);
    followupContainer.setOutputMarkupPlaceholderTag(true);

    final DropDownChoice clinicalPicturesSwitcher = new DropDownChoice("clinicalPicturesSwitcher",
            followUpModel, clinicalPictureListModel, new DateChoiceRenderer("clinicalPictureDate", "id") {
                @Override
                protected Date getDate(Object object) {
                    return ((ClinicalData) object).getClinicalPictureDate();
                }
            });

    clinicalPicturesSwitcher.setNullValid(true);

    clinicalPicturesSwitcher.setOutputMarkupId(true);
    clinicalPictureContainer.setOutputMarkupPlaceholderTag(true);
    followupContainer.add(clinicalPicturesSwitcher);
    clinicalPicturesSwitcher.add(new AjaxFormComponentUpdatingBehavior("onChange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            clinicalPictureContainer.setVisible(true);
            target.add(clinicalPictureContainer);

        }
    });

    AjaxLink addNew = new AjaxLink("addNew") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            ClinicalData clinicalData = new ClinicalData();
            Diagnosis daignosis = RadarModelFactory.getDiagnosisModel(radarNumberModel, diagnosisManager)
                    .getObject();
            if (daignosis != null) {
                clinicalData.setSignificantDiagnosis1(daignosis.getSignificantDiagnosis1());
                clinicalData.setSignificantDiagnosis2(daignosis.getSignificantDiagnosis2());
            }

            ClinicalData firstClinicalData = clinicalDataManager
                    .getFirstClinicalDataByRadarNumber(radarNumberModel.getObject());
            if (firstClinicalData != null) {
                clinicalData.setPhenotype1(firstClinicalData.getPhenotype1());
                clinicalData.setPhenotype2(firstClinicalData.getPhenotype2());
                clinicalData.setPhenotype3(firstClinicalData.getPhenotype3());
                clinicalData.setPhenotype4(firstClinicalData.getPhenotype4());
            }

            formModel.setObject(clinicalData);
            clinicalPictureContainer.setVisible(true);
            clinicalPicturesSwitcher.clearInput();
            target.add(clinicalPictureContainer, clinicalPicturesSwitcher);

        }
    };

    followupContainer.add(addNew);
    add(followupContainer);

    final List<Component> componentsToUpdate = new ArrayList<Component>();
    if (clinicalPicturesSwitcher.isVisible()) {
        componentsToUpdate.add(clinicalPicturesSwitcher);
    }

    final Form<ClinicalData> form = new Form<ClinicalData>("form", formModel) {
        @Override
        protected void onValidateModelObjects() {
            super.onValidateModelObjects();
            ClinicalData clinicalData = getModelObject();
            Integer systolicBloodPressureVal = clinicalData.getSystolicBloodPressure();
            Integer diastolicBloodPressureVal = clinicalData.getDiastolicBloodPressure();
            if (systolicBloodPressureVal != null && diastolicBloodPressureVal != null) {
                if (!(systolicBloodPressureVal.compareTo(diastolicBloodPressureVal) > 0)) {
                    diastolicBloodPressure.error("This value has to be less than the first value");
                }
            }

        }

        @Override
        protected void onSubmit() {
            ClinicalData clinicalData = getModelObject();
            Long radarNumber;

            if (clinicalData.getRadarNumber() == null) {
                try {
                    radarNumber = radarNumberModel.getObject();
                } catch (ClassCastException e) {
                    Object obj = radarNumberModel.getObject();
                    radarNumber = Long.parseLong((String) obj);
                }

                clinicalData.setRadarNumber(radarNumber);
            }
            clinicalDataManager.saveClinicalDate(clinicalData);

            // if first visit - follow through phenotypes to following visit records
            if (isFirstVisit) {
                List<ClinicalData> clinicalDatas = clinicalDataManager
                        .getClinicalDataByRadarNumber(clinicalData.getRadarNumber());

                for (ClinicalData cd : clinicalDatas) {
                    // ignore first visit
                    if (clinicalData.getId().equals(cd.getId())) {
                        continue;
                    }
                    cd.setPhenotype1(clinicalData.getPhenotype1());
                    cd.setPhenotype2(clinicalData.getPhenotype2());
                    cd.setPhenotype3(clinicalData.getPhenotype3());
                    cd.setPhenotype4(clinicalData.getPhenotype4());
                    clinicalDataManager.saveClinicalDate(cd);
                }
            }
        }
    };

    clinicalPictureContainer.add(form);

    final IModel<Boolean> isSrnsModel = new AbstractReadOnlyModel<Boolean>() {
        private DiagnosisCode diagnosisCode = null;

        @Override
        public Boolean getObject() {
            if (diagnosisCode == null) {
                if (radarNumberModel.getObject() != null) {
                    Diagnosis diagnosis = diagnosisManager
                            .getDiagnosisByRadarNumber(radarNumberModel.getObject());
                    diagnosisCode = diagnosis != null ? diagnosis.getDiagnosisCode() : null;
                }
            }

            if (diagnosisCode != null) {
                return diagnosisCode.getId().equals(DiagnosisPanel.SRNS_ID);
            }
            return false;
        }
    };

    Label successLabel = RadarComponentFactory.getSuccessMessageLabel("successMessage", form,
            componentsToUpdate);
    Label successLabelDown = RadarComponentFactory.getSuccessMessageLabel("successMessageDown", form,
            componentsToUpdate);

    Label errorLabel = RadarComponentFactory.getErrorMessageLabel("errorMessage", form, componentsToUpdate);
    Label errorLabelDown = RadarComponentFactory.getErrorMessageLabel("errorMessageDown", form,
            componentsToUpdate);

    TextField<Long> radarNumber = new TextField<Long>("radarNumber", radarNumberModel);
    radarNumber.setEnabled(false);
    form.add(radarNumber);

    form.add(new TextField("hospitalNumber",
            RadarModelFactory.getHospitalNumberModel(radarNumberModel, patientManager)));

    form.add(new TextField("diagnosis", new PropertyModel(
            RadarModelFactory.getDiagnosisCodeModel(radarNumberModel, diagnosisManager), "abbreviation")));

    form.add(new TextField("firstName", RadarModelFactory.getFirstNameModel(radarNumberModel, patientManager)));

    form.add(new TextField("surname", RadarModelFactory.getSurnameModel(radarNumberModel, patientManager)));

    form.add(new DateTextField("dob", RadarModelFactory.getDobModel(radarNumberModel, patientManager),
            RadarApplication.DATE_PATTERN));

    RadarRequiredDateTextField clinicalPictureDate = new RadarRequiredDateTextField("clinicalPictureDate", form,
            componentsToUpdate);
    form.add(clinicalPictureDate);

    RadarTextFieldWithValidation height = new RadarTextFieldWithValidation("height",
            new RangeValidator<Double>(RadarApplication.MIN_HEIGHT, RadarApplication.MAX_HEIGHT), form,
            componentsToUpdate);
    form.add(height);

    RadarTextFieldWithValidation weight = new RadarTextFieldWithValidation("weight",
            new RangeValidator<Double>(3.0, 100.0), form, componentsToUpdate);
    form.add(weight);
    // Blood pressure
    TextField<Double> systolicBloodPressure = new TextField("systolicBloodPressure");
    systolicBloodPressure.add(new RangeValidator<Integer>(50, 200));
    form.add(systolicBloodPressure);

    final ComponentFeedbackPanel systolicBloodPressureFeedback = new ComponentFeedbackPanel(
            "systolicBloodPressureFeedback", systolicBloodPressure);
    systolicBloodPressureFeedback.setOutputMarkupId(true);
    systolicBloodPressureFeedback.setOutputMarkupPlaceholderTag(true);
    form.add(systolicBloodPressureFeedback);

    diastolicBloodPressure.add(new RangeValidator<Integer>(20, 150));
    form.add(diastolicBloodPressure);

    final ComponentFeedbackPanel diastolicBloodPressureFeedback = new ComponentFeedbackPanel(
            "diastolicBloodPressureFeedback", diastolicBloodPressure);
    diastolicBloodPressureFeedback.setOutputMarkupId(true);
    diastolicBloodPressureFeedback.setOutputMarkupPlaceholderTag(true);
    form.add(diastolicBloodPressureFeedback);

    Component meanArterialPressure = new TextField("meanArterialPressure").setEnabled(false);
    meanArterialPressure.setOutputMarkupPlaceholderTag(true);
    meanArterialPressure.setOutputMarkupId(true);
    form.add(meanArterialPressure);
    componentsToUpdate.add(meanArterialPressure);

    WebMarkupContainer phenotypeContainer1 = new WebMarkupContainer(PHENOTYPE_CONTAINER_1) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    WebMarkupContainer phenotypeContainer2 = new WebMarkupContainer(PHENOTYPE_CONTAINER_2) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    WebMarkupContainer phenotypeContainer3 = new WebMarkupContainer(PHENOTYPE_CONTAINER_3) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    WebMarkupContainer phenotypeContainer4 = new WebMarkupContainer(PHENOTYPE_CONTAINER_4) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    phenotypeContainer1.add(new PhenotypeChooser("phenotype1"));
    phenotypeContainer2.add(new PhenotypeChooser("phenotype2"));
    phenotypeContainer3.add(new PhenotypeChooser("phenotype3"));
    phenotypeContainer4.add(new PhenotypeChooser("phenotype4"));

    form.add(phenotypeContainer1);
    form.add(phenotypeContainer2);
    form.add(phenotypeContainer3);
    form.add(phenotypeContainer4);

    form.add(new TextArea("comments"));
    form.add(new TextField("significantDiagnosis1"));
    form.add(new TextField("significantDiagnosis2"));

    // Yes/No/Unknown for the following
    WebMarkupContainer patientDetailsContainer = new WebMarkupContainer(PATIENT_DETAILS_CONTAINER) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    patientDetailsContainer.setOutputMarkupPlaceholderTag(true);
    form.add(patientDetailsContainer);

    patientDetailsContainer.add(new YesNoRadioGroup("oedema", true));
    patientDetailsContainer.add(new YesNoRadioGroup("hypovalaemia", true));
    patientDetailsContainer.add(new YesNoRadioGroup("fever", true));

    WebMarkupContainer thrombosisContainer = new WebMarkupContainer(THROMBOSIS_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    YesNoRadioGroup thrombosis = new YesNoRadioGroup("thrombosis", true);
    thrombosisContainer.add(thrombosis);
    patientDetailsContainer.add(thrombosisContainer);

    WebMarkupContainer peritonitisContainer = new WebMarkupContainer(PERITONITIS_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    peritonitisContainer.add(new YesNoRadioGroup("peritonitis", true));
    patientDetailsContainer.add(peritonitisContainer);

    WebMarkupContainer pulmonaryOedemaContainer = new WebMarkupContainer(PULMONARY_OEDEMA_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return isSrnsModel.getObject();
        }
    };
    pulmonaryOedemaContainer.add(new YesNoRadioGroup("pulmonaryOedema", true));
    patientDetailsContainer.add(pulmonaryOedemaContainer);
    patientDetailsContainer.add(new YesNoRadioGroup("hypertension", true));

    //urticaria
    boolean showUrticariaOnInit = form.getModelObject().getUrticaria() != null
            ? form.getModelObject().getUrticaria()
            : false;

    // only show if diag is mpgn/dd
    if (isSrnsModel.getObject().equals(true)) {
        showUrticariaOnInit = false;
    }

    final IModel<Boolean> showUrticariaIModel = new Model<Boolean>(showUrticariaOnInit);

    MarkupContainer urticariaDetailContainer = new WebMarkupContainer(URTICARIA_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            if (!hideElement(isFirstVisit, isSrnsModel.getObject(), getId())) {
                return showUrticariaIModel.getObject();
            }
            return false;
        }
    };
    componentsToUpdate.add(urticariaDetailContainer);

    urticariaDetailContainer.add(new TextArea("rashDetail")); // shares same field in db as rash detail It seems
    patientDetailsContainer.add(urticariaDetailContainer);
    urticariaDetailContainer.setOutputMarkupId(true);
    urticariaDetailContainer.setOutputMarkupPlaceholderTag(true);

    // More yes/no options
    WebMarkupContainer urticariaContainer = new WebMarkupContainer(URTICARIA_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    YesNoRadioGroup urticaria = new YesNoRadioGroup("urticaria", true);
    urticariaContainer.add(urticaria);
    patientDetailsContainer.add(urticariaContainer);
    urticaria.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showUrticariaIModel.setObject(Boolean.TRUE.equals(form.getModelObject().getUrticaria()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    // Diabetes
    WebMarkupContainer diabetesTypeContainer = new WebMarkupContainer(DIABETES_TYPE_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    diabetesTypeContainer.add(new DropDownChoice<ClinicalData.DiabetesType>("diabetesType",
            Arrays.asList(ClinicalData.DiabetesType.TYPE_I, ClinicalData.DiabetesType.TYPE_II,
                    ClinicalData.DiabetesType.NO),
            new ChoiceRenderer<ClinicalData.DiabetesType>("label", "id")));
    patientDetailsContainer.add(diabetesTypeContainer);

    boolean showRashDetailsOnInit = form.getModelObject().getRash() != null ? form.getModelObject().getRash()
            : false;
    // only show if diag is srns
    if (isSrnsModel.getObject().equals(false)) {
        showRashDetailsOnInit = false;
    }

    final IModel<Boolean> showRashDetailsIModel = new Model<Boolean>(showRashDetailsOnInit);

    // Rash details needs show/hide
    final MarkupContainer rashDetailContainer = new WebMarkupContainer(RASH_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            if (!hideElement(isFirstVisit, isSrnsModel.getObject(), getId())) {
                return showRashDetailsIModel.getObject();
            }
            return false;
        }
    };

    rashDetailContainer.add(new TextArea("rashDetail"));
    patientDetailsContainer.add(rashDetailContainer);
    rashDetailContainer.setOutputMarkupId(true);
    rashDetailContainer.setOutputMarkupPlaceholderTag(true);
    componentsToUpdate.add(rashDetailContainer);

    // More yes/no options
    WebMarkupContainer rashContainer = new WebMarkupContainer(RASH_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    YesNoRadioGroup rash = new YesNoRadioGroup("rash", true);
    rashContainer.add(rash);
    patientDetailsContainer.add(rashContainer);

    rash.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showRashDetailsIModel.setObject(Boolean.TRUE.equals(form.getModelObject().getRash()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    WebMarkupContainer possibleImmunisationTriggerContainer = new WebMarkupContainer(
            POSSIBLE_IMMUNISATION_TRIGGER_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    YesNoRadioGroup possibleImmunisationTrigger = new YesNoRadioGroup("possibleImmunisationTrigger", true);
    possibleImmunisationTriggerContainer.add(possibleImmunisationTrigger);
    patientDetailsContainer.add(possibleImmunisationTriggerContainer);

    WebMarkupContainer partialLipodystrophyContainer = new WebMarkupContainer(
            PARTIAL_LIPODYSTROPHY_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    YesNoRadioGroup partialLipodystrophy = new YesNoRadioGroup("partialLipodystrophy", true);

    partialLipodystrophyContainer.add(partialLipodystrophy);
    patientDetailsContainer.add(partialLipodystrophyContainer);

    WebMarkupContainer preceedingInfectionContainer = new WebMarkupContainer(
            PRECEEDING_INFECTION_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    // preceding infection
    boolean showPrecedingInfectionOnInit = form.getModelObject().getPreceedingInfection() != null
            ? form.getModelObject().getPreceedingInfection()
            : false;

    // only show if diag is mpgn/dd
    if (isSrnsModel.getObject().equals(true)) {
        showPrecedingInfectionOnInit = false;
    }

    final IModel<Boolean> showPrecedingInfectioModel = new Model<Boolean>(showPrecedingInfectionOnInit);

    YesNoRadioGroup preceedingInfection = new YesNoRadioGroup("preceedingInfection", true);
    preceedingInfectionContainer.add(preceedingInfection);
    preceedingInfection.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showPrecedingInfectioModel
                    .setObject(Boolean.TRUE.equals(form.getModelObject().getPreceedingInfection()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });
    patientDetailsContainer.add(preceedingInfectionContainer);

    // Preceeding infection show/hide
    MarkupContainer preceedingInfectionDetailContainer = new WebMarkupContainer(
            PRECEEDING_INFECTION_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return showPrecedingInfectioModel.getObject();
        }
    };
    TextAreaWithHelpText preceedingInfectionDetail = new TextAreaWithHelpText("preceedingInfectionDetail",
            "Enter details") {
        @Override
        public String getModelData() {
            ClinicalData clinicalData = formModel.getObject();
            return clinicalData != null ? clinicalData.getPreceedingInfectionDetail() != null
                    ? clinicalData.getPreceedingInfectionDetail()
                    : "" : "";
        }

        @Override
        public void setModelData(String data) {
            ClinicalData clinicalData = formModel.getObject();
            if (clinicalData != null) {
                clinicalData.setPreceedingInfectionDetail(data);
            }
        }
    };
    preceedingInfectionDetail.initBehaviour();
    preceedingInfectionDetailContainer.add(preceedingInfectionDetail);
    patientDetailsContainer.add(preceedingInfectionDetailContainer);
    componentsToUpdate.add(preceedingInfectionDetailContainer);
    preceedingInfectionDetailContainer.setOutputMarkupId(true);
    preceedingInfectionDetailContainer.setOutputMarkupPlaceholderTag(true);

    // chronic infection
    boolean showChronicOnInit = form.getModelObject().getChronicInfection() != null
            ? form.getModelObject().getChronicInfection()
            : false;

    // only show if diag is mpgn/dd
    if (isSrnsModel.getObject().equals(true)) {
        showChronicOnInit = false;
    }

    final IModel<Boolean> showChronicModel = new Model<Boolean>(showChronicOnInit);

    WebMarkupContainer chronicInfectionActiveContainer = new WebMarkupContainer(
            CHRONIC_INFECTION_ACTIVE_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    YesNoRadioGroup chronicInfection = new YesNoRadioGroup("chronicInfection", true);
    chronicInfection.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showChronicModel.setObject(Boolean.TRUE.equals(form.getModelObject().getChronicInfection()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });
    chronicInfectionActiveContainer.add(chronicInfection);
    patientDetailsContainer.add(chronicInfectionActiveContainer);

    // Chronic infection show/hide
    MarkupContainer chronicInfectionDetailContainer = new WebMarkupContainer(
            CHRONIC_INFECTION_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            if (!hideElement(isFirstVisit, isSrnsModel.getObject(), getId())) {
                return showChronicModel.getObject();
            }
            return false;
        }
    };
    TextAreaWithHelpText chronicInfectionDetail = new TextAreaWithHelpText("chronicInfectionDetail",
            "Enter Details") {
        @Override
        public String getModelData() {
            ClinicalData clinicalData = formModel.getObject();
            return clinicalData != null ? clinicalData.getChronicInfectionDetail() != null
                    ? clinicalData.getChronicInfectionDetail()
                    : "" : "";
        }

        @Override
        public void setModelData(String data) {
            ClinicalData clinicalData = formModel.getObject();
            if (clinicalData != null) {
                clinicalData.setChronicInfectionDetail(data);
            }
        }
    };

    chronicInfectionDetail.initBehaviour();

    chronicInfectionDetailContainer.add(chronicInfectionDetail);
    componentsToUpdate.add(chronicInfectionDetailContainer);
    chronicInfectionDetailContainer.setOutputMarkupId(true);
    chronicInfectionDetailContainer.setOutputMarkupPlaceholderTag(true);

    patientDetailsContainer.add(chronicInfectionDetailContainer);

    boolean showOphthalmoscopyDetailsOnInit = form.getModelObject().getOphthalmoscopy() != null
            ? form.getModelObject().getOphthalmoscopy()
            : false;

    final IModel<Boolean> showOphthalmoscopyDetailsIModel = new Model<Boolean>(showOphthalmoscopyDetailsOnInit);

    YesNoRadioGroup ophthalmoscopy = new YesNoRadioGroup("ophthalmoscopy", true);
    patientDetailsContainer.add(ophthalmoscopy);
    ophthalmoscopy.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showOphthalmoscopyDetailsIModel
                    .setObject(Boolean.TRUE.equals(form.getModelObject().getOphthalmoscopy()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    // Ophthalmoscopy show/hide
    MarkupContainer ophthalmoscopyDetailContainer = new WebMarkupContainer("ophthalmoscopyDetailContainer") {
        @Override
        public boolean isVisible() {
            return showOphthalmoscopyDetailsIModel.getObject();
        }
    };
    ophthalmoscopyDetailContainer.setOutputMarkupId(true);
    ophthalmoscopyDetailContainer.setOutputMarkupPlaceholderTag(true);
    componentsToUpdate.add(ophthalmoscopyDetailContainer);

    TextAreaWithHelpText ophthalmoscopyDetail = new TextAreaWithHelpText("ophthalmoscopyDetail",
            ClinicalData.OPHTHALMOSCOPY_HELP_TEXT) {
        @Override
        public String getModelData() {
            ClinicalData clinicalData = formModel.getObject();
            return clinicalData != null
                    ? clinicalData.getOphthalmoscopyDetail() != null ? clinicalData.getOphthalmoscopyDetail()
                            : ""
                    : "";
        }

        @Override
        public void setModelData(String data) {
            ClinicalData clinicalData = formModel.getObject();
            if (clinicalData != null) {
                clinicalData.setOphthalmoscopyDetail(data);
            }
        }
    };

    ophthalmoscopyDetail.initBehaviour();

    ophthalmoscopyDetailContainer.add(ophthalmoscopyDetail);

    patientDetailsContainer.add(ophthalmoscopyDetailContainer);

    componentsToUpdate.add(systolicBloodPressureFeedback);
    componentsToUpdate.add(diastolicBloodPressureFeedback);

    // Complications
    WebMarkupContainer complicationsContainer = new WebMarkupContainer("complicationsContainer") {
        @Override
        public boolean isVisible() {
            return !isFirstVisit && isSrnsModel.getObject();
        }
    };

    complicationsContainer.add(new YesNoRadioGroup("infectionNecessitatingHospitalisation", false, false));
    MarkupContainer infectionDetailContainer = new WebMarkupContainer("infectionDetailContainer");
    infectionDetailContainer.add(new TextArea("infectionDetail"));
    complicationsContainer.add(infectionDetailContainer);

    complicationsContainer.add(new YesNoRadioGroup("complicationThrombosis", false, false));
    MarkupContainer complicationThrombosisDetailContainer = new WebMarkupContainer(
            "complicationThrombosisContainer");
    complicationThrombosisDetailContainer.add(new TextArea("complicationThrombosisDetail"));
    complicationsContainer.add(complicationThrombosisDetailContainer);

    // Hypertension
    complicationsContainer.add(new YesNoRadioGroup("hypertension", true));

    // CKD stage
    complicationsContainer.add(new CkdStageRadioGroup("ckdStage"));
    form.add(complicationsContainer);

    // Listed for transplant?

    WebMarkupContainer listedForTransplantContainer = new WebMarkupContainer("listedForTransplantContainer") {
        @Override
        public boolean isVisible() {
            return !isFirstVisit && isSrnsModel.getObject();
        }
    };

    form.add(listedForTransplantContainer);
    listedForTransplantContainer.add(new YesNoRadioGroup("listedForTransplant"));

    ClinicalAjaxSubmitLink save = new ClinicalAjaxSubmitLink("save") {
        @Override
        protected List<? extends Component> getComponentsToUpdate() {
            return componentsToUpdate;
        }
    };

    ClinicalAjaxSubmitLink saveDown = new ClinicalAjaxSubmitLink("saveDown") {
        @Override
        protected List<? extends Component> getComponentsToUpdate() {
            return componentsToUpdate;
        }
    };

    form.add(save, saveDown);
}