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

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

Introduction

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

Prototype

public DropDownChoice(String id, IModel<? extends List<? extends T>> choices) 

Source Link

Document

Constructor.

Usage

From source file:almira.sample.web.panel.LocaleDropDownPanel.java

License:Apache License

/**
 * Add the language panel.//ww w. j av a 2 s.c  o  m
 *
 * @param id
 *            the language id
 * @param supportedLocales
 *            the list of supported locales
 */
public LocaleDropDownPanel(String id, List<?> supportedLocales) {
    super(id);

    DropDownChoice<Object> localeDropDown = new DropDownChoice<Object>(CHOICE_PATH, supportedLocales) {
        @Override
        protected boolean wantOnSelectionChangedNotifications() {
            return true;
        }
    };

    localeDropDown.setChoiceRenderer(new ChoiceRenderer<Object>() {
        @Override
        public String getDisplayValue(Object locale) {
            return ((Locale) locale).getDisplayName(getLocale());
        }
    });

    localeDropDown.setModel(new IModel<Object>() {
        @Override
        public Object getObject() {
            return getSession().getLocale();
        }

        @Override
        public void setObject(Object object) {
            getSession().setLocale((Locale) object);
        }

        @Override
        public void detach() {
        }
    });

    add(localeDropDown);
}

From source file:au.org.theark.phenotypic.web.component.phenodataentry.form.PhenoCollectionListForm.java

License:Open Source License

private void initPhenoFieldGroupDdc() {
    LinkSubjectStudy linkSubjectStudy = cpModel.getObject().getPhenoDataSetCollection().getLinkSubjectStudy();
    List<PhenoDataSetGroup> pheDataSetGroupLst = iPhenotypicService
            .getPhenoDataSetGroupsByLinkSubjectStudy(linkSubjectStudy);
    ChoiceRenderer<PhenoDataSetGroup> renderer = new ChoiceRenderer<PhenoDataSetGroup>("name", "id");
    phenoDataSetFieldGroupDdc = new DropDownChoice<PhenoDataSetGroup>("pheDataSetGroupSelected",
            pheDataSetGroupLst);/*from  w ww. ja va 2  s  . com*/
    phenoDataSetFieldGroupDdc.setChoiceRenderer(renderer);
    phenoDataSetFieldGroupDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        private static final long serialVersionUID = 1L;

        protected void onUpdate(AjaxRequestTarget target) {
            categoryPanel.remove(pickedPhenoDataSetCategoryDdc);
            //Create list of PickedPhenoDataSetCategories here for the hierarchy view of the category.
            List<PickedPhenoDataSetCategory> pickedPhenoDataSetCategories = populatePickedPhenoDataSetCategoriesFromdisplayListForPhenoDataSetGroup(
                    phenoDataSetFieldGroupDdc.getModelObject());
            List<PickedPhenoDataSetCategory> pickedPhenoDataSetCategoriesHierachical = PhenoDataSetCategoryOrderingHelper
                    .getInstance().orderHierarchicalyphenoDatasetCategories(pickedPhenoDataSetCategories);
            ChoiceRenderer renderer = new ChoiceRenderer("phenoDataSetCategory.name",
                    "phenoDataSetCategory.id") {
                @Override
                public Object getDisplayValue(Object object) {
                    PickedPhenoDataSetCategory pickedCat = (PickedPhenoDataSetCategory) object;
                    return PhenoDataSetCategoryOrderingHelper.getInstance().preTextDecider(pickedCat)
                            + super.getDisplayValue(object);
                }
            };
            pickedPhenoDataSetCategoryDdc = new DropDownChoice<PickedPhenoDataSetCategory>(
                    "pickedPhenoDataSetCategory", pickedPhenoDataSetCategoriesHierachical, renderer);
            pickedPhenoDataSetCategoryDdc.setOutputMarkupId(true);
            categoryPanel.add(pickedPhenoDataSetCategoryDdc);
            target.add(pickedPhenoDataSetCategoryDdc);
            target.add(categoryPanel);
            // Enable getData button when customFieldGroup actually selected
            getDataButton.setEnabled(phenoDataSetFieldGroupDdc.getValue() != null
                    && !phenoDataSetFieldGroupDdc.getValue().isEmpty()
                    && pickedPhenoDataSetCategoryDdc.getValue() != null
                    && !pickedPhenoDataSetCategoryDdc.getValue().isEmpty());
            target.add(getDataButton);
            target.add(feedbackPanel);
        }
    });
    addOrReplace(phenoDataSetFieldGroupDdc);
}

From source file:au.org.theark.phenotypic.web.component.phenodataentry.form.PhenoCollectionListForm.java

License:Open Source License

private void initPhenoDataSetFieldCategoryDdc() {
    categoryPanel = new WebMarkupContainer("categoryPanel");
    categoryPanel.setOutputMarkupId(true);
    List<PickedPhenoDataSetCategory> pickedPhenoDataSetCategories = populatePickedPhenoDataSetCategoriesFromdisplayListForPhenoDataSetGroup(
            cpModel.getObject().getPhenoDataSetCollection().getQuestionnaire());
    List<PickedPhenoDataSetCategory> pickedPhenoDataSetCategoriesHierachical = PhenoDataSetCategoryOrderingHelper
            .getInstance().orderHierarchicalyphenoDatasetCategories(pickedPhenoDataSetCategories);
    ChoiceRenderer renderer = new ChoiceRenderer("phenoDataSetCategory.name", "phenoDataSetCategory.id") {
        @Override//  w  w  w .ja va 2s.  c  o  m
        public Object getDisplayValue(Object object) {
            PickedPhenoDataSetCategory pickedCat = (PickedPhenoDataSetCategory) object;
            return PhenoDataSetCategoryOrderingHelper.getInstance().preTextDecider(pickedCat)
                    + super.getDisplayValue(object);
        }
    };
    pickedPhenoDataSetCategoryDdc = new DropDownChoice<PickedPhenoDataSetCategory>("pickedPhenoDataSetCategory",
            pickedPhenoDataSetCategoriesHierachical);
    pickedPhenoDataSetCategoryDdc.setOutputMarkupId(true);
    pickedPhenoDataSetCategoryDdc.setChoiceRenderer(renderer);
    categoryPanel.add(pickedPhenoDataSetCategoryDdc);
    add(categoryPanel);
}

From source file:ca.travelagency.customer.CustomerPage.java

License:Apache License

public CustomerPage(Customer customer) {
    final Form<Customer> form = new Form<Customer>(FORM, DaoEntityModelFactory.make(customer, Customer.class));
    form.setOutputMarkupId(true);/*  www .  j  ava2  s.  c  om*/
    add(form);

    initialize(form);

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

    form.add(new DropDownChoice<CustomerStatus>(Customer.Properties.status.name(),
            Arrays.asList(CustomerStatus.values())).setRequired(true)
                    .setLabel(new ResourceModel("customer.status")).setEnabled(hasRole(Role.ADMIN))
                    .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new SalutationField(Customer.Properties.salutation.name())
            .setLabel(new ResourceModel("customer.salutation")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    LastNameField lastNameField = new LastNameField(Customer.Properties.lastName.name());
    form.add(lastNameField.setLabel(new ResourceModel("customer.lastName")).setRequired(true)
            .add(StringFieldHelper.maxLenFieldValidator()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    FirstNameField firstNameField = new FirstNameField(Customer.Properties.firstName.name());
    form.add(firstNameField.setLabel(new ResourceModel("customer.firstName")).setRequired(true)
            .add(StringFieldHelper.maxLenFieldValidator()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new CompanyNameField(Customer.Properties.companyName.name())
            .setLabel(new ResourceModel("customer.companyName")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(Customer.Properties.address.name())
            .setLabel(new ResourceModel("customer.address")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new CityField(Customer.Properties.city.name()).setLabel(new ResourceModel("customer.city"))
            .add(StringFieldHelper.maxLenFieldValidator()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new ProvinceField(Customer.Properties.province.name())
            .setLabel(new ResourceModel("customer.province")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(Customer.Properties.postalCode.name())
            .setLabel(new ResourceModel("customer.postalCode")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new CountryField(Customer.Properties.country.name())
            .setLabel(new ResourceModel("customer.country")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(Customer.Properties.email.name())
            .setLabel(new ResourceModel("customer.email")).add(StringFieldHelper.maxLenFieldValidator())
            .add(EmailAddressValidator.getInstance()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    RequiredTextField<String> primaryPhoneNumber = new RequiredTextField<String>(
            Customer.Properties.primaryPhone.name());
    form.add(primaryPhoneNumber.setLabel(new ResourceModel("customer.primaryPhone"))
            .add(StringFieldHelper.maxLenFieldValidator())
            .add(new PhoneNumberValidator(), new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(Customer.Properties.secondaryPhone.name())
            .setLabel(new ResourceModel("customer.secondaryPhone"))
            .add(StringFieldHelper.maxLenFieldValidator())
            .add(new PhoneNumberValidator(), new FieldDecorator(), new AjaxOnBlurBehavior()));
    DateField dateOfBirthField = new BirthDateField(Customer.Properties.dateOfBirth.name());
    form.add(dateOfBirthField.setLabel(new ResourceModel("customer.dateOfBirth")).add(new FieldDecorator(),
            new AjaxOnBlurBehavior()));
    form.add(new TextArea<String>(Customer.Properties.notes.name())
            .setLabel(new ResourceModel("customer.notes")).add(StringFieldHelper.maxLenAreaValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new SystemUserField(Customer.Properties.systemUser.name())
            .setLabel(new ResourceModel("customer.agent")).setVisible(hasRole(Role.ADMIN))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TravelDocumentField(Customer.Properties.travelDocumentType.name())
            .setLabel(new ResourceModel("customer.travelDocumentType"))
            .add(StringFieldHelper.maxLenFieldValidator()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new TextField<String>(Customer.Properties.travelDocumentNumber.name())
            .setLabel(new ResourceModel("customer.travelDocumentNumber"))
            .add(StringFieldHelper.maxLenFieldValidator()).add(new FieldDecorator(), new AjaxOnBlurBehavior()));

    form.add(new CustomerDuplicateValidator(lastNameField, firstNameField, primaryPhoneNumber,
            dateOfBirthField));

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

        @Override
        public void preSubmit(AjaxRequestTarget target, Customer daoEntity, boolean newDaoEntity) {
            if (newDaoEntity && !hasRole(Role.ADMIN)) {
                daoEntity.setSystemUser(getSignedInSystemUser());
            }
        }

        @Override
        public void postSubmit(AjaxRequestTarget target, Customer daoEntity, boolean newDaoEntity) {
            if (newDaoEntity || hasRole(Role.ADMIN)) {
                setResponsePage(new CustomerPage(daoEntity));
            }
        }
    });

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

    form.add(new Link<String>(CREATE_INVOICE_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick() {
            setResponsePage(new InvoicePage(form.getModelObject()));
        }
    }.setVisible(form.getModelObject().isActive() && isVisible(form.getModelObject())));

    add(createInvoicePanel(form));
}

From source file:ca.travelagency.customer.CustomersPage.java

License:Apache License

private Form<CustomerFilter> makeSearchForm(IModel<CustomerFilter> model) {
    final Form<CustomerFilter> form = new Form<CustomerFilter>(SEARCH_FORM,
            new CompoundPropertyModel<CustomerFilter>(model));

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

    form.add(new TextField<String>(CustomerFilter.Properties.searchText.name())
            .setLabel(new ResourceModel("customer.searchText")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new DropDownChoice<CustomerStatus>(CustomerFilter.Properties.status.name(),
            Arrays.asList(CustomerStatus.values())).setLabel(new ResourceModel("customer.status"))
                    .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new SystemUserField(CustomerFilter.Properties.systemUser.name())
            .setLabel(new ResourceModel("customer.agent")).setVisible(hasRole(Role.ADMIN))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));

    form.add(new Button(SEARCH_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override/*from ww w. jav a  2s  .  c  om*/
        public void onSubmit() {
            setResponsePage(new CustomersPage());
        }
    });

    form.add(new Button(CLEAR_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            getAuthenticatedSession().clearCustomerFilter();
            setResponsePage(new CustomersPage());
        }
    }.setDefaultFormProcessing(false));

    return form;
}

From source file:ca.travelagency.identity.roles.RoleFormPanel.java

License:Apache License

public RoleFormPanel(String id, final RolesPanel rolesPanel) {
    super(id);/*www. j  av a 2  s.  com*/
    IModel<SystemUserRole> model = DaoEntityModelFactory.make(SystemUserRole.class);
    Form<SystemUserRole> roleForm = new Form<SystemUserRole>(FORM, model);
    roleForm.setOutputMarkupId(true);

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

    roleForm.add(new DropDownChoice<Role>(SystemUserRole.Properties.role.name(), Arrays.asList(Role.values()))
            .setLabel(new ResourceModel("systemUser.role"))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));

    roleForm.add(new SavePanelDetail<SystemUserRole>(SAVE_BUTTON, roleForm) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit(AjaxRequestTarget target, Form<SystemUserRole> form) {
            SystemUserRole systemUserRole = form.getModelObject();
            rolesPanel.update(target, systemUserRole);
            form.setDefaultModel(DaoEntityModelFactory.make(SystemUserRole.class));
        }
    });

    roleForm.add(new ResetPanel<SystemUserRole>(RESET_BUTTON, roleForm));

    add(roleForm);
}

From source file:ca.travelagency.invoice.InvoicePage.java

License:Apache License

private Form<Invoice> invoiceForm(Customer customer, Invoice invoice) {
    final IModel<Invoice> invoiceModel = DaoEntityModelFactory.make(invoice, Invoice.class);
    boolean isPersisted = DaoEntityModelFactory.isPersisted(invoiceModel.getObject());

    Form<Invoice> form = new Form<Invoice>(FORM, invoiceModel);
    form.setOutputMarkupId(true);//from  ww w  .j  ava 2s .co m

    form.add(customerPanel);
    form.add(totalsPanel);

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

    form.add(new RequiredTextField<String>(Invoice.Properties.invoiceNumber.name())
            .setLabel(new ResourceModel("invoice.number")).setVisible(isPersisted).setEnabled(false)
            .add(new FieldDecorator()));
    form.add(new DateField(Invoice.Properties.date.name()).setRequired(true)
            .setLabel(new ResourceModel("invoice.date")).setEnabled(invoiceModel.getObject().isActive())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new DateField(Invoice.Properties.totalDueDate.name()).setRequired(true)
            .setLabel(new ResourceModel("invoice.totalDueDate")).setEnabled(invoiceModel.getObject().isActive())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new SystemUserField(Invoice.Properties.systemUser.name()).setRequired(true)
            .setLabel(new ResourceModel("invoice.agent")).setEnabled(invoiceModel.getObject().isActive())
            .setVisible(hasRole(Role.ADMIN)).add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new DropDownChoice<InvoiceStatus>(Invoice.Properties.status.name(),
            Arrays.asList(InvoiceStatus.values())).setRequired(true)
                    .setLabel(new ResourceModel("invoice.status")).setEnabled(hasRole(Role.ADMIN))
                    .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new CheckBox(Invoice.Properties.billCompany.name())
            .setLabel(new ResourceModel("invoice.billCompany"))
            .setVisible(StringUtils.isNotEmpty(customerPanel.getModelObject().getCompanyName()))
            .setEnabled(invoiceModel.getObject().isActive())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));

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

        @Override
        public void preSubmit(AjaxRequestTarget target, Invoice daoEntity, boolean newDaoEntity) {
            if (!newDaoEntity) {
                return;
            }
            initialize(daoEntity);
            if (!hasRole(Role.ADMIN)) {
                daoEntity.setSystemUser(getSignedInSystemUser());
            }
        }

        @Override
        public void postSubmit(AjaxRequestTarget target, Invoice daoEntity, boolean newDaoEntity) {
            if (newDaoEntity || hasRole(Role.ADMIN)) {
                setResponsePage(new InvoicePage(daoEntity));
            }
        }

        private void initialize(Invoice daoEntity) {
            Customer customer = customerPanel.getModelObject();
            daoEntity.initialize(customer);
            daoEntity.addInvoiceTraveler(InvoiceTraveler.make(customer));

            List<String> defaultInvoiceNotes = parameterRepository.getDefaultInvoiceNotes();
            for (int i = 0; i < defaultInvoiceNotes.size(); i++) {
                InvoiceNote invoiceNote = InvoiceNote.make(defaultInvoiceNotes.get(i));
                invoiceNote.setDate(DateUtils.addSeconds(invoiceNote.getDate(), i));
                daoEntity.addInvoiceNote(invoiceNote);
            }
        }
    });

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

    form.add(new Link<String>(PREVIEW_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick() {
            setResponsePage(new InvoicePreviewPage(invoiceModel.getObject()));
        }
    }.setVisible(isPersisted));

    return form;
}

From source file:ca.travelagency.invoice.InvoicesPage.java

License:Apache License

private Form<InvoiceFilter> makeSearchForm(IModel<InvoiceFilter> model) {
    final Form<InvoiceFilter> form = new Form<InvoiceFilter>(SEARCH_FORM,
            new CompoundPropertyModel<InvoiceFilter>(model));

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

    form.add(new TextField<String>(InvoiceFilter.Properties.searchText.name())
            .setLabel(new ResourceModel("invoice.searchText")).add(StringFieldHelper.maxLenFieldValidator())
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new CheckBox(InvoiceFilter.Properties.showUnpaidInvoicesOnly.name())
            .setLabel(new ResourceModel("invoice.showUnpaidInvoicesOnly"))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new DropDownChoice<InvoiceStatus>(InvoiceFilter.Properties.status.name(),
            Arrays.asList(InvoiceStatus.values())).setLabel(new ResourceModel("invoice.status"))
                    .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new SystemUserField(InvoiceFilter.Properties.systemUser.name())
            .setLabel(new ResourceModel("invoice.agent")).setVisible(hasRole(Role.ADMIN))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new DateField(InvoiceFilter.Properties.invoiceDateFrom.name())
            .setLabel(new ResourceModel("invoice.dateFrom"))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    form.add(new DateField(InvoiceFilter.Properties.invoiceDateTo.name())
            .setLabel(new ResourceModel("invoice.dateTo")).add(new FieldDecorator(), new AjaxOnBlurBehavior()));

    form.add(new Button(SEARCH_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override/*from www . j  a  v  a  2s . c o  m*/
        public void onSubmit() {
            setResponsePage(new InvoicesPage());
        }
    });

    form.add(new Button(CLEAR_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            getAuthenticatedSession().clearInvoiceFilter();
            setResponsePage(new InvoicesPage());
        }
    }.setDefaultFormProcessing(false));

    return form;
}

From source file:ca.travelagency.invoice.InvoiceStatusForm.java

License:Apache License

public InvoiceStatusForm(String id, Invoice invoice) {
    super(id);//  w  ww . j  av a 2  s.c  o m

    final Form<Invoice> form = new Form<Invoice>(FORM, DaoEntityModelFactory.make(invoice));
    form.setOutputMarkupId(true);
    add(form);

    form.add(new DropDownChoice<InvoiceStatus>(Invoice.Properties.status.name(),
            Arrays.asList(InvoiceStatus.values())).setRequired(true)
                    .setLabel(new ResourceModel("invoiceStatusForm.label"))
                    .add(FieldDecorator.doNotDisplayLabel())
                    .add(new AjaxFormComponentUpdatingBehavior("onchange") {
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected void onUpdate(AjaxRequestTarget target) {
                            Invoice invoice = form.getModelObject();
                            daoSupport.persist(invoice);
                            target.add(form);
                        }

                        @Override
                        protected void onError(AjaxRequestTarget target, RuntimeException e) {
                            target.add(form);
                        }
                    }));
}

From source file:ca.travelagency.invoice.payments.PaymentFormPanel.java

License:Apache License

public PaymentFormPanel(final String id, InvoicePayment invoicePayment, final PaymentsPanel paymentsPanel) {
    super(id);//  w  ww  . j av  a 2s.c om
    Validate.notNull(paymentsPanel);

    setOutputMarkupId(true);

    IModel<InvoicePayment> model = DaoEntityModelFactory.make(invoicePayment, InvoicePayment.class);
    final Form<InvoicePayment> paymentForm = new Form<InvoicePayment>(FORM, model);
    paymentForm.setOutputMarkupId(true);

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

    paymentForm.add(new RequiredTextField<BigDecimal>(InvoicePayment.Properties.amount.name())
            .setLabel(new ResourceModel("invoice.paymentAmount"))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    paymentForm.add(new CheckBox(InvoicePayment.Properties.reconciled.name())
            .setLabel(new ResourceModel("invoice.paymentReconciled"))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()).setVisible(hasRole(Role.ADMIN)));
    paymentForm.add(new DropDownChoice<PaymentType>(InvoicePayment.Properties.paymentType.name(),
            Arrays.asList(PaymentType.values())).setRequired(true)
                    .setLabel(new ResourceModel("invoice.paymentType"))
                    .add(new FieldDecorator(), new AjaxOnBlurBehavior()));
    paymentForm.add(new DateField(InvoicePayment.Properties.date.name()).setRequired(true)
            .setLabel(new ResourceModel("invoice.paymentDate"))
            .add(new FieldDecorator(), new AjaxOnBlurBehavior()));

    paymentForm.add(new SavePanelDetail<InvoicePayment>(SAVE_BUTTON, paymentForm) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit(AjaxRequestTarget target, Form<InvoicePayment> form) {
            paymentsPanel.update(target, form.getModelObject());
            IModel<InvoicePayment> model = DaoEntityModelFactory.make(InvoicePayment.class);
            form.setModel(model);
        }
    });

    paymentForm.add(new ResetPanel<InvoicePayment>(RESET_BUTTON, paymentForm)
            .setResetModel(!DaoEntityModelFactory.isPersisted(model.getObject())));

    paymentForm.add(new CancelPanel(CANCEL_BUTTON) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            PaymentRowPanel paymentRowPanel = new PaymentRowPanel(id, paymentForm.getModel(), paymentsPanel);
            PaymentFormPanel.this.replaceWith(paymentRowPanel);
            target.add(paymentRowPanel);
        }
    }.setVisible(invoicePayment != null));

    add(paymentForm);
}