Example usage for org.apache.wicket.markup.html.form NumberTextField NumberTextField

List of usage examples for org.apache.wicket.markup.html.form NumberTextField NumberTextField

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.form NumberTextField NumberTextField.

Prototype

public NumberTextField(String id) 

Source Link

Document

Construct.

Usage

From source file:ca.travelagency.identity.SystemUserPage.java

License:Apache License

private Form<SystemUser> makeSystemUserForm(SystemUser systemUser) {
    final Form<SystemUser> form = new Form<SystemUser>(FORM,
            DaoEntityModelFactory.make(systemUser, SystemUser.class));
    form.setOutputMarkupId(true);/*from w w w  .ja va  2s.co m*/

    form.add(new ComponentFeedbackPanel(FEEDBACK, form));

    RequiredTextField<String> name = new RequiredTextField<String>(DaoEntity.PROPERTY_NAME);
    name.setLabel(new ResourceModel("systemUser.name")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior(), new DuplicateValidator<SystemUser>(form));
    form.add(name);
    form.add(new TextField<String>(SystemUser.Properties.lastName.name())
            .setLabel(new ResourceModel("systemUser.lastName")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(SystemUser.Properties.firstName.name())
            .setLabel(new ResourceModel("systemUser.firstName")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(SystemUser.Properties.email.name())
            .setLabel(new ResourceModel("systemUser.email")).add(StringFieldHelper.maxLenFieldValidator())
            .add(EmailAddressValidator.getInstance()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(SystemUser.Properties.primaryPhone.name())
            .setLabel(new ResourceModel("systemUser.primaryPhone"))
            .add(StringFieldHelper.maxLenFieldValidator())
            .add(new PhoneNumberValidator(), new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(SystemUser.Properties.secondaryPhone.name())
            .setLabel(new ResourceModel("systemUser.secondaryPhone"))
            .add(StringFieldHelper.maxLenFieldValidator())
            .add(new PhoneNumberValidator(), new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new CheckBox(SystemUser.Properties.active.name()).setLabel(new ResourceModel("systemUser.active"))
            .setVisible(hasRole(Role.ADMIN)).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new NumberTextField<Double>(SystemUser.Properties.commissionRate.name()).setMinimum(0.00)
            .setMaximum(999.99).setLabel(new ResourceModel("systemUser.commissionRate"))
            .setVisible(hasRole(Role.ADMIN)).add(new FieldDecorator(), new AjaxOnBlurBehavior()));

    addPasswordFields(form);

    form.add(new SavePanel<SystemUser>(SAVE_BUTTON, form) {
        private static final long serialVersionUID = 1L;

        @Override
        public void preSubmit(AjaxRequestTarget target, SystemUser daoEntity, boolean newDaoEntity) {
            if (!newDaoEntity) {
                return;
            }
            daoEntity.addSystemUserRole(SystemUserRole.make(Role.AGENT));
        }

        @Override
        public void postSubmit(AjaxRequestTarget target, SystemUser daoEntity, boolean newDaoEntity) {
            if (!newDaoEntity) {
                return;
            }
            setResponsePage(new SystemUserPage(daoEntity));
        }
    });

    form.add(new ResetPanel<SystemUser>(RESET_BUTTON, form));

    return form;
}

From source file:com.fdorigo.rmfly.wicket.RecordPage.java

private void init() {
    add(new FeedbackPanel("feedback"));

    final DateTextField dateTextField = new DateTextField("arrivalDate");
    dateTextField.setRequired(true);//ww  w.j  a  v  a2 s  .  co m

    DatePicker datePicker = new DatePicker() {
        @Override
        protected String getAdditionalJavaScript() {
            return "${calendar}.cfg.setProperty(\"navigator\",true,false); ${calendar}.render();";
        }
    };
    datePicker.setShowOnFieldClick(true);
    datePicker.setAutoHide(true);
    dateTextField.add(datePicker);

    final TextField<String> nNumberField = new TextField<>("nnumber");
    nNumberField.setRequired(true);
    if (validNnumber) {
        nNumberField.add(AttributeModifier.append("readonly", "true"));
    } else {
        nNumberField.add(AttributeModifier.append("placeholder", "Not Found"));
    }

    DropDownChoice<AirplaneType> listCategories = new DropDownChoice<>("category",
            new PropertyModel<>(this, "selected"), Arrays.asList(AirplaneType.values()));
    listCategories.setRequired(true);

    final TextField<String> firstNameField = new TextField<>("firstName");
    final TextField<String> lastNameField = new TextField<>("lastName");
    final TextField<String> primaryPhoneField = new TextField<>("primaryPhone");
    primaryPhoneField.setRequired(true);
    final TextField<String> secondaryPhoneField = new TextField<>("secondaryPhone");
    final TextField<String> addressOneField = new TextField<>("addressOne");
    final TextField<String> addressStateField = new TextField<>("addressState");
    final TextField<String> addressCityField = new TextField<>("addressCity");
    final TextField<String> addressZipField = new TextField<>("addressZip");
    final TextField<String> emailAddressField = new TextField<>("emailAddress");
    emailAddressField.add(EmailAddressValidator.getInstance());
    emailAddressField.setRequired(true);
    final TextField<String> airplaneMakeField = new TextField<>("airplaneMake");
    final TextField<String> airplaneModelField = new TextField<>("airplaneModel");
    final NumberTextField<Integer> manufactureYearField = new NumberTextField<>("manufactureYear");
    manufactureYearField.setType(Integer.class);
    int year = Calendar.getInstance().get(Calendar.YEAR);
    manufactureYearField.setMinimum(1903).setMaximum(year);

    RadioGroup<String> group = new RadioGroup<>("needJudging");
    group.setRequired(true);
    add(group);
    ListView<Boolean> radios = new ListView<Boolean>("radios", TRUE_FALSE) {
        @Override
        protected void populateItem(ListItem<Boolean> item) {
            Radio<Boolean> radio = new Radio<>("radio", item.getModel());
            radio.setLabel(new Model(item.getModelObject()));
            item.add(radio);
            item.add(new SimpleFormComponentLabel("boolval", radio));
        }
    }.setReuseItems(true);
    group.add(radios);

    Model<Record> recordModel = new Model<>(record);
    Form<Record> recordForm = new Form<>("recordForm", new CompoundPropertyModel<>(recordModel));

    final Button saveRecordButton = new Button("save") {
        @Override
        public void onSubmit() {
            record.setCategory(selected.toString());
            if (manufactureYearField.getInput() != null) {
                record.setManufactureYear(manufactureYearField.getInput());
            }
            recordFacade.edit(record);
            setResponsePage(HomePage.class);
        }
    };
    if (formControlsEnabled != true) {
        saveRecordButton.setVisible(false);
    }
    recordForm.add(saveRecordButton);

    final Button deleteRecordButton = new Button("delete") {
        @Override
        public void onSubmit() {
            recordFacade.remove(record);
            setResponsePage(HomePage.class);
        }
    };

    deleteRecordButton.setDefaultFormProcessing(false);
    if (formControlsEnabled != true) {
        deleteRecordButton.setVisible(false);
    }
    recordForm.add(deleteRecordButton);

    add(recordForm);

    recordForm.add(nNumberField);
    recordForm.add(firstNameField);
    recordForm.add(lastNameField);
    recordForm.add(secondaryPhoneField);
    recordForm.add(addressOneField);
    recordForm.add(addressStateField);
    recordForm.add(addressCityField);
    recordForm.add(addressZipField);
    recordForm.add(emailAddressField);
    recordForm.add(airplaneMakeField);
    recordForm.add(airplaneModelField);
    recordForm.add(manufactureYearField);

    /* Mandatory Fields */
    recordForm.add(dateTextField);
    recordForm.add(primaryPhoneField);
    recordForm.add(group);
    recordForm.add(listCategories);
    //        recordForm.add(new FormComponentFeedbackBorder("arrivalDateBorder").add(dateTextField));
    //        recordForm.add(new FormComponentFeedbackBorder("primaryPhoneBorder").add(primaryPhoneField));
    //        recordForm.add(new FormComponentFeedbackBorder("needJudgingBorder").add(group));
    //        recordForm.add(new FormComponentFeedbackBorder("categoryBorder").add(listCategories));
}

From source file:cz.zcu.kiv.eegdatabase.wui.ui.licenses.components.LicenseEditForm.java

License:Apache License

private void addFormFields() {
    priceInput = new NumberTextField<BigDecimal>("price");
    priceInput.setMinimum(BigDecimal.ZERO);
    priceInput.setRequired(true);/*from w  ww.jav a  2  s .c  o  m*/
    priceInput.setEnabled(false);
    priceInput.setLabel(ResourceUtils.getModel("label.license.price"));
    form.add(priceInput);

    WicketUtils.addLabelsAndFeedback(form);

    addBlueprintSelect();
}

From source file:org.sakaiproject.attendance.tool.pages.panels.AttendanceGradeFormPanel.java

License:Educational Community License

private Form<AttendanceSite> createSettingsForm() {
    final AttendanceSite aS = attendanceLogic.getCurrentAttendanceSite();
    this.previousSendToGradebook = aS.getSendToGradebook() == null ? false : aS.getSendToGradebook();
    this.previousName = aS.getGradebookItemName();
    this.previousMaxGrade = aS.getMaximumGrade();

    Form<AttendanceSite> aSForm = new Form<AttendanceSite>("settings",
            new CompoundPropertyModel<AttendanceSite>(aS)) {
        @Override// w w  w  . j a  va  2  s  .c  o  m
        public void onSubmit() {
            AttendanceSite aS = (AttendanceSite) getDefaultModelObject();

            if (aS.getMaximumGrade() == null && previousMaxGrade != null) {
                aS.setSendToGradebook(false);
            }

            boolean result = attendanceLogic.updateAttendanceSite(aS);

            if (result) {
                if (aS.getSendToGradebook()) {
                    if (previousSendToGradebook) { // if previously true, see if any relevant values have changed
                        if (!previousName.equals(aS.getGradebookItemName())
                                || !previousMaxGrade.equals(aS.getMaximumGrade())) {
                            attendanceGradebookProvider.update(aS);
                        }

                        previousName = aS.getGradebookItemName();
                    } else {
                        attendanceGradebookProvider.create(aS);
                    }
                } else {
                    if (previousSendToGradebook) {
                        attendanceGradebookProvider.remove(aS);
                    }
                }

                previousMaxGrade = aS.getMaximumGrade();
                previousSendToGradebook = aS.getSendToGradebook();

                getSession().info(getString("attendance.settings.grading.success"));
            } else {
                getSession().error(getString("attendance.settings.grading.failure"));
            }

        }
    };

    final WebMarkupContainer grading = new WebMarkupContainer("grading") {
        @Override
        public boolean isVisible() {
            return !(aS.getMaximumGrade() == null);
        }
    };
    grading.setOutputMarkupPlaceholderTag(true);

    Label maxGradeLabel = new Label("maximum-grade-label",
            new ResourceModel("attendance.settings.grading.max.points.possible"));
    NumberTextField<Double> maximum = new NumberTextField<Double>("maximumGrade");
    maximum.setMinimum(0.1);
    maximum.setStep(0.1);
    maximum.add(new AjaxFormComponentUpdatingBehavior("onkeyup") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.add(grading);
        }
    });
    aSForm.add(maximum);
    aSForm.add(maxGradeLabel);

    Label isGradeShownLabel = new Label("is-grade-shown-label",
            new ResourceModel("attendance.settings.grading.is.grade.shown"));
    CheckBox isGradeShown = new CheckBox("isGradeShown");
    grading.add(isGradeShown);
    grading.add(isGradeShownLabel);

    final WebMarkupContainer gradebook = new WebMarkupContainer("gradebook") {
        @Override
        public boolean isVisible() {
            return aS.getSendToGradebook();
        }
    };
    gradebook.setOutputMarkupPlaceholderTag(true);
    Label gbItemName = new Label("gradebook-item-name",
            new ResourceModel("attendance.settings.grading.gradebook.item.name"));
    TextField<String> gradebookItemName = new TextField<String>("gradebookItemName");
    gradebookItemName.add(new GradebookItemNameValidator(aS, aS.getGradebookItemName()));
    gradebookItemName.setRequired(true);
    gradebook.add(gbItemName);
    gradebook.add(gradebookItemName);
    grading.add(gradebook);

    final boolean gradebookDefined = attendanceGradebookProvider.isGradebookDefined(aS.getSiteID());
    final AjaxCheckBox sendToGradebook = new AjaxCheckBox("sendToGradebook") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.add(gradebook);
        }

        @Override
        public boolean isVisible() {
            return gradebookDefined;

        }
    };
    Label sendToGBLabel = new Label("send-to-gradebook",
            new ResourceModel("attendance.settings.grading.send.to.gradebook")) {
        @Override
        public boolean isVisible() {
            return gradebookDefined;
        }
    };
    grading.add(sendToGradebook);
    grading.add(sendToGBLabel);
    aSForm.add(grading);

    AjaxSubmitLink submit = new AjaxSubmitLink("submit") {
        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            target.add(pageFeedbackPanel);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            super.onSubmit(target, form);
            target.add(pageFeedbackPanel);
        }
    };
    submit.add(new AttributeModifier("value", new ResourceModel("attendance.settings.grading.save")));
    aSForm.add(submit);

    return aSForm;
}

From source file:org.sakaiproject.attendance.tool.pages.panels.AttendanceGradePanel.java

License:Educational Community License

private Form<AttendanceGrade> createGradeForm() {
    Form<AttendanceGrade> gForm = new Form<AttendanceGrade>("attendance-grade", this.agIModel) {
        @Override/*from  w  w  w  .jav  a2  s . c o m*/
        public void onSubmit() {
            AttendanceGrade aG = (AttendanceGrade) getDefaultModelObject();

            boolean result = attendanceLogic.updateAttendanceGrade(aG);

            String displayName = sakaiProxy.getUserSortName(aG.getUserID());

            if (result) {
                attendanceGradebookProvider.sendToGradebook(aG.getId());

                String grade = aG.getGrade() == null ? "null" : aG.getGrade().toString();
                getSession().info(new StringResourceModel("attendance.grade.update.success", null,
                        new String[] { grade, displayName }).getString());
            } else {
                getSession().error(new StringResourceModel("attendance.grade.update.failure", null,
                        new String[] { displayName }).getString());
            }

        }
    };

    final Double maximumGrade = this.attendanceSite.getMaximumGrade();

    NumberTextField<Double> points = new NumberTextField<Double>("grade") {
        @Override
        public boolean isEnabled() {
            return maximumGrade != null;
        }
    };
    points.setMinimum(0.0);
    points.setStep(0.1);

    points.add(new AjaxFormSubmitBehavior(gForm, "input") {
        @Override
        protected void onError(AjaxRequestTarget target) {
            target.add(pageFeedbackPanel);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            if (target != null) {
                target.add(pageFeedbackPanel);
            }
        }
    });

    Label maximum;

    if (maximumGrade == null) {
        maximum = new Label("maximum", "-");
        points.add(new AttributeModifier("title", new StringResourceModel("attendance.grade.tooltip.disabled",
                null, new String[] { new ResourceModel("settings.link.label").getObject() })));
    } else {
        maximum = new Label("maximum", maximumGrade.toString());
        points.setMaximum(maximumGrade);
    }

    gForm.add(maximum);
    gForm.add(points);

    return gForm;
}

From source file:org.sakaiproject.attendance.tool.panels.AttendanceGradeFormPanel.java

License:Educational Community License

private Form<AttendanceSite> createSettingsForm() {
    final AttendanceSite aS = attendanceLogic.getCurrentAttendanceSite();
    this.previousSendToGradebook = aS.getSendToGradebook();
    this.previousName = aS.getGradebookItemName();
    this.previousMaxGrade = aS.getMaximumGrade();
    this.useAutoGrading.setObject(aS.getUseAutoGrading());
    this.autoGradeBySubtraction.setObject(aS.getAutoGradeBySubtraction());

    Form<AttendanceSite> aSForm = new Form<AttendanceSite>("settings", new CompoundPropertyModel<>(aS)) {
        @Override/*from  ww  w  .  j  a  va  2  s.c om*/
        public void onSubmit() {
            AttendanceSite aS = (AttendanceSite) getDefaultModelObject();

            aS.setUseAutoGrading(useAutoGrading.getObject());
            aS.setAutoGradeBySubtraction(autoGradeBySubtraction.getObject());

            if (aS.getMaximumGrade() == null && previousMaxGrade != null) {
                aS.setSendToGradebook(false);
                aS.setUseAutoGrading(false);
            }

            boolean result = attendanceLogic.updateAttendanceSite(aS);

            if (result) {
                if (aS.getSendToGradebook()) {
                    if (previousSendToGradebook) { // if previously true, see if any relevant values have changed
                        if (!previousName.equals(aS.getGradebookItemName())
                                || !previousMaxGrade.equals(aS.getMaximumGrade())) {
                            attendanceGradebookProvider.update(aS);
                        }

                        previousName = aS.getGradebookItemName();
                    } else {
                        attendanceGradebookProvider.create(aS);
                    }
                } else {
                    if (previousSendToGradebook) {
                        attendanceGradebookProvider.remove(aS);
                    }
                }

                previousMaxGrade = aS.getMaximumGrade();
                previousSendToGradebook = aS.getSendToGradebook();

                // Successful Save - Regrade All if Auto Grade is set to true and maximum points is set
                if (aS.getUseAutoGrading() != null && aS.getUseAutoGrading() && aS.getMaximumGrade() > 0) {
                    attendanceLogic.regradeAll(aS);
                }

                getSession().info(getString("attendance.settings.grading.success"));
            } else {
                getSession().error(getString("attendance.settings.grading.failure"));
            }

        }
    };

    final WebMarkupContainer grading = new WebMarkupContainer("grading") {
        @Override
        public boolean isVisible() {
            return !(aS.getMaximumGrade() == null);
        }
    };
    grading.setOutputMarkupPlaceholderTag(true);

    Label maxGradeLabel = new Label("maximum-grade-label",
            new ResourceModel("attendance.settings.grading.max.points.possible"));
    NumberTextField<Double> maximum = new NumberTextField<Double>("maximumGrade");
    maximum.setMinimum(0.1);
    maximum.setStep(0.1);
    maximum.add(new AjaxFormComponentUpdatingBehavior("oninput") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.add(grading);
        }
    });
    aSForm.add(maximum);
    aSForm.add(maxGradeLabel);

    Label isGradeShownLabel = new Label("is-grade-shown-label",
            new ResourceModel("attendance.settings.grading.is.grade.shown"));
    CheckBox isGradeShown = new CheckBox("isGradeShown");
    grading.add(isGradeShown);
    grading.add(isGradeShownLabel);

    final WebMarkupContainer gradebook = new WebMarkupContainer("gradebook") {
        @Override
        public boolean isVisible() {
            return aS.getSendToGradebook();
        }
    };
    gradebook.setOutputMarkupPlaceholderTag(true);
    Label gbItemName = new Label("gradebook-item-name",
            new ResourceModel("attendance.settings.grading.gradebook.item.name"));
    TextField<String> gradebookItemName = new TextField<String>("gradebookItemName");
    gradebookItemName.add(new GradebookItemNameValidator(aS, aS.getGradebookItemName()));
    gradebookItemName.setRequired(true);
    gradebook.add(gbItemName);
    gradebook.add(gradebookItemName);
    grading.add(gradebook);

    final boolean gradebookDefined = attendanceGradebookProvider.isGradebookDefined(aS.getSiteID());
    final AjaxCheckBox sendToGradebook = new AjaxCheckBox("sendToGradebook") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.add(gradebook);
        }

        @Override
        public boolean isVisible() {
            return gradebookDefined;

        }
    };
    Label sendToGBLabel = new Label("send-to-gradebook",
            new ResourceModel("attendance.settings.grading.send.to.gradebook")) {
        @Override
        public boolean isVisible() {
            return gradebookDefined;
        }
    };
    grading.add(sendToGradebook);
    grading.add(sendToGBLabel);

    final RadioGroup<Boolean> useAutoGradingGroup = new RadioGroup<>("use-auto-grading-group",
            this.useAutoGrading);
    useAutoGradingGroup.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.add(gradingRulesPanel);
            target.add(autoGradingTypeContainer);
        }
    });
    useAutoGradingGroup.setRenderBodyOnly(false);
    grading.add(useAutoGradingGroup);

    Radio<Boolean> manualGrading = new Radio<>("manual-grading", Model.of(Boolean.FALSE));
    Radio<Boolean> autoGrading = new Radio<>("auto-grading", Model.of(Boolean.TRUE));

    useAutoGradingGroup.add(manualGrading);
    useAutoGradingGroup.add(autoGrading);

    this.autoGradingTypeContainer = new WebMarkupContainer("auto-grading-type") {
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            Boolean autoGrading = useAutoGrading.getObject();
            return autoGrading != null && autoGrading;
        }
    };
    this.autoGradingTypeContainer.setOutputMarkupPlaceholderTag(true);
    grading.add(this.autoGradingTypeContainer);

    final RadioGroup<Boolean> autoGradeType = new RadioGroup<>("auto-grading-type-group",
            this.autoGradeBySubtraction);
    autoGradeType.setRenderBodyOnly(false);
    this.autoGradingTypeContainer.add(autoGradeType);

    Radio<Boolean> subtractGrading = new Radio<>("subtract-grading", Model.of(Boolean.TRUE));
    Radio<Boolean> addGrading = new Radio<>("add-grading", Model.of(Boolean.FALSE));

    autoGradeType.add(subtractGrading);
    autoGradeType.add(addGrading);

    aSForm.add(grading);

    AjaxSubmitLink submit = new AjaxSubmitLink("submit") {
        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            target.add(pageFeedbackPanel);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            super.onSubmit(target, form);
            target.add(pageFeedbackPanel);
        }
    };
    submit.add(new AttributeModifier("value", new ResourceModel("attendance.settings.grading.save")));
    aSForm.add(submit);

    return aSForm;
}

From source file:org.sakaiproject.attendance.tool.panels.AttendanceGradePanel.java

License:Educational Community License

private Form<AttendanceGrade> createGradeForm() {
    Form<AttendanceGrade> gForm = new Form<AttendanceGrade>("attendance-grade", this.agIModel) {
        @Override/*ww  w .  j  av  a 2s . c om*/
        public void onSubmit() {
            AttendanceGrade aG = (AttendanceGrade) getDefaultModelObject();

            boolean result;

            if (Boolean.TRUE.equals(attendanceSite.getUseAutoGrading())
                    && Boolean.FALSE.equals(aG.getOverride())) {
                result = attendanceLogic.regrade(aG, true) != null;
            } else {
                result = attendanceLogic.updateAttendanceGrade(aG);
            }

            String displayName = sakaiProxy.getUserSortName(aG.getUserID());

            if (result) {
                String grade = aG.getGrade() == null ? "null" : aG.getGrade().toString();
                getSession().info(new StringResourceModel("attendance.grade.update.success", null,
                        new String[] { grade, displayName }).getString());
            } else {
                getSession().error(new StringResourceModel("attendance.grade.update.failure", null,
                        new String[] { displayName }).getString());
            }

        }
    };

    final Double maximumGrade = this.attendanceSite.getMaximumGrade();

    NumberTextField<Double> points = new NumberTextField<Double>("grade") {
        @Override
        public boolean isEnabled() {
            return maximumGrade != null && (Boolean.FALSE.equals(attendanceSite.getUseAutoGrading())
                    || Boolean.TRUE.equals(agIModel.getObject().getOverride()));
        }
    };
    points.setMinimum(0.0);
    points.setStep(0.1);

    points.add(new AjaxFormSubmitBehavior(gForm, "input") {
        @Override
        protected void onError(AjaxRequestTarget target) {
            target.add(pageFeedbackPanel);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            if (target != null) {
                target.add(pageFeedbackPanel);
            }
        }
    });

    Label maximum;

    if (maximumGrade == null) {
        maximum = new Label("maximum", "/ -");
        points.add(new AttributeModifier("title", new StringResourceModel("attendance.grade.tooltip.disabled",
                null, new String[] { new ResourceModel("settings.link.label").getObject() })));
    } else {
        maximum = new Label("maximum", "/ " + maximumGrade.toString());
    }
    maximum.setVisible(!this.isEnabled());

    final CheckBox override = new CheckBox("override", new PropertyModel<>(gForm.getModelObject(), "override"));
    override.setVisible(this.attendanceSite.getUseAutoGrading() && this.isEnabled());
    override.add(new AjaxFormSubmitBehavior(gForm, "change") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            if (target != null) {
                target.add(pageFeedbackPanel);
                target.add(points);
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            target.add(pageFeedbackPanel);
        }
    });
    gForm.add(override);

    final FormComponentLabel overrideLabel = new FormComponentLabel("overrideLabel", override);
    overrideLabel.setVisible(this.attendanceSite.getUseAutoGrading() && this.isEnabled());
    gForm.add(overrideLabel);

    gForm.add(maximum);
    gForm.add(points);

    return gForm;
}