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

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

Introduction

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

Prototype

public SubmitLink(String id) 

Source Link

Document

With this constructor the SubmitLink must be inside a Form.

Usage

From source file:se.inera.axel.rivssek.webconsole.RivSsekServiceMappingEditPage.java

License:Open Source License

@SuppressWarnings({ "unchecked", "rawtypes" })
public RivSsekServiceMappingEditPage(PageParameters params) {
    super(params);

    add(new FeedbackPanel("feedback"));

    RivSsekServiceMapping mapping = null;
    String id = params.get("id").toString();
    if (id != null) {
        mapping = mappingRepository.findOne(id);
    }/*  ww w  .j  ava2  s  . co  m*/
    if (mapping == null) {
        mapping = new RivSsekServiceMapping.Builder().ssekReceiverType(IdType.CN).build();
    }
    IModel<RivSsekServiceMapping> mappingModel = new CompoundPropertyModel<>(mapping);
    Form<RivSsekServiceMapping> form = new Form<RivSsekServiceMapping>("form", mappingModel) {
        @Override
        protected void onSubmit() {
            super.onSubmit();
            RivSsekServiceMapping rivShsMapping = getModelObject();

            mappingRepository.save(rivShsMapping);
            setResponsePage(RivSsekServiceMappingPage.class);
        }

        private static final long serialVersionUID = 1L;
    };

    form.add(new ControlGroupContainer(new TextField<String>("rivServiceNamespace").setRequired(true)));
    form.add(new ControlGroupContainer(new TextField<String>("rivLogicalAddress").setRequired(true)));
    form.add(new ControlGroupContainer(new TextField<String>("address").setRequired(true)));

    DropDownChoice<IdType> ssekReceiverType = new DropDownChoice<>("ssekReceiverType",
            Arrays.asList(IdType.values()), new EnumChoiceRenderer<IdType>(form));
    form.add(new ControlGroupContainer(ssekReceiverType.setRequired(true)));
    form.add(new ControlGroupContainer(new TextField<String>("ssekReceiver").setRequired(true)));
    form.add(new SubmitLink("submit"));
    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.agreement.AgreementFormPanel.java

License:Open Source License

@SuppressWarnings({ "unchecked", "rawtypes" })
public AgreementFormPanel(final String panelId, final PageParameters parameters) {
    super(panelId);

    add(new FeedbackPanel("feedback"));

    ShsAgreement agreement = getAgreement(parameters);

    IModel<ShsAgreement> agreementModel = new CompoundPropertyModel<ShsAgreement>(agreement);

    final Form<ShsAgreement> form = new Form<ShsAgreement>("agreementForm", agreementModel) {
        private static final long serialVersionUID = 1L;

        @Override//w w  w .ja  va  2s .c om
        protected void onSubmit() {
            super.onSubmit();
            ShsAgreement shsAgreement = getModelObject();
            parameters.set(CURRENT_UUID.toString(), shsAgreement.getUuid());

            agreementAdminService.save(shsAgreement);

            String view = parameters.get(VIEW.toString()).toString();
            if (view != null && view.equals("xml")) {
                setResponsePage(EditAgreementPage.class, parameters);
            } else {
                setResponsePage(AgreementPage.class);
            }
        }
    };

    boolean isEditMode = isEditMode(parameters);

    final TextField<String> uuidField = new TextField<String>("uuid");
    uuidField.setRequired(true).setEnabled(!isEditMode);
    uuidField.add(new IValidator<String>() {

        @Override
        public void validate(IValidatable<String> validatable) {
            String value = validatable.getValue();
            if (!isEditMode(parameters)) {
                if (agreementAdminService.findOne(value) != null) {
                    ValidationError error = new ValidationError();
                    error.addMessageKey("agreementForm.uuid.Exists");
                    error.setVariable("uuid", value);
                    validatable.error(error);
                }
            }
        }
    });
    form.add(new ControlGroupContainer(uuidField));

    List<Principal> principals = getPrincipals();
    IChoiceRenderer<Principal> principalRenderer = new PrincipalChoiceRenderer();
    form.add(new ControlGroupContainer(
            new DropDownChoice("shs.principal", Model.ofList(principals), principalRenderer)
                    .setRequired(true)));

    List<Customer> customers = getCustomers();
    IChoiceRenderer<Customer> customerRenderer = new CustomerChoiceRenderer();
    DropDownChoice ddcCustomer = new DropDownChoice("shs.customer", Model.ofList(customers), customerRenderer);
    form.add(new ControlGroupContainer(ddcCustomer));

    DropDownChoice<String> transferType = new DropDownChoice<String>("transferType",
            Model.ofList(Constant.TRANSFER_TYPE_LIST));
    transferType.setRequired(true);
    form.add(new ControlGroupContainer(transferType));

    form.add(new ControlGroupContainer(new CheckBox("shs.confirm.required")));
    form.add(new ControlGroupContainer(
            new DropDownChoice<String>("shs.direction.flow", Model.ofList(Constant.DIRECTION_LIST))
                    .setRequired(true)));

    List<Product> products = getProducts();
    IChoiceRenderer<Product> productRenderer = new ProductChoiceRenderer();
    form.add(new ControlGroupContainer(
            new DropDownChoice("shs.product.0", Model.ofList(products), productRenderer).setRequired(true)));

    form.add(new ControlGroupContainer(
            new DateTextField("general.valid.validFrom.date", "yyyy-MM-dd").setRequired(true)));
    form.add(new ControlGroupContainer(new DateTextField("general.valid.validTo.date", "yyyy-MM-dd")));

    form.add(new ControlGroupContainer(new TextArea<String>("general.description")));

    form.add(new SubmitLink("showxml") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            super.onSubmit();
            parameters.set(VIEW.toString(), "xml");
        }
    });
    form.add(new SubmitLink("submit"));
    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.agreement.AgreementXmlPanel.java

License:Open Source License

/**
 * Constructor/*w w w.  j  a  v  a2 s . c  o m*/
 * 
 * @param id
 * @param parameters
 */
public AgreementXmlPanel(final String id, final PageParameters parameters) {
    super(id);

    add(new FeedbackPanel("feedback"));

    ShsAgreement agreement = getAgreement(parameters);

    marshaller = new ShsAgreementMarshaller(ObjectFactory.class.getClassLoader());

    String xml = marshaller.marshal(agreement);

    XmlForm xmlForm = new XmlForm(agreement.getUuid(), xml);
    IModel<XmlForm> xmlModel = new CompoundPropertyModel<>(xmlForm);

    Form<XmlForm> form = new Form<XmlForm>("agreementForm", xmlModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            super.onSubmit();
            XmlForm xmlForm = getModelObject();
            try {
                ShsAgreement agreement = unmarshal(xmlForm.getXml());

                parameters.set(CURRENT_UUID.toString(), agreement.getUuid());
                agreementAdminService.save(agreement);

                String view = parameters.get(VIEW.toString()).toString();
                if (view != null && view.equals("form")) {
                    setResponsePage(EditAgreementPage.class, parameters);
                } else {
                    setResponsePage(AgreementPage.class);
                }
            } catch (Exception e) {
                error(e.getMessage());
                e.printStackTrace();
            }
        }

        private ShsAgreement unmarshal(String xml) {
            ShsAgreementMarshaller marshaller = new ShsAgreementMarshaller(
                    ObjectFactory.class.getClassLoader());
            return marshaller.unmarshal(xml);
        }

    };
    form.add(new HiddenField<String>("uuid"));
    TextArea<String> xmlField = new TextArea<>("xml");
    xmlField.add(new IValidator<String>() {

        @Override
        public void validate(IValidatable<String> validatable) {
            ShsAgreement shsAgreement = null;

            try {
                shsAgreement = marshaller.unmarshal(validatable.getValue());
            } catch (XmlException e) {
                ValidationError error = new ValidationError();
                error.addKey("xml.InvalidXml");
                validatable.error(error);
                return;
            }

            if (isEditMode(parameters)) {
                String currentUUID = parameters.get(CURRENT_UUID.toString()).toOptionalString();
                if (currentUUID != null && !currentUUID.equalsIgnoreCase(shsAgreement.getUuid())) {
                    ValidationError error = new ValidationError();
                    error.addKey("uuid.ReadOnly");
                    error.setVariable("originalUUID", currentUUID);
                    validatable.error(error);
                    return;
                }
            } else {
                if (agreementAdminService.findOne(shsAgreement.getUuid()) != null) {
                    ValidationError error = new ValidationError();
                    error.addKey("Exists");
                    error.setVariable("uuid", shsAgreement.getUuid());
                    validatable.error(error);
                    return;
                }
            }
        }
    });
    form.add(new ControlGroupContainer(xmlField));
    form.add(new SubmitLink("showform") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            super.onSubmit();
            parameters.set(VIEW.toString(), "form");
        }
    });
    form.add(new SubmitLink("submit"));
    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.directory.ActorEditFormPanel.java

License:Open Source License

public ActorEditFormPanel(String id, PageParameters params) {
    super(id);/*from  w  ww . j ava2s .co  m*/

    add(new FeedbackPanel("feedback"));

    final String orgNumber = params.get("orgNumber").toString();
    if (StringUtils.isNotBlank(orgNumber)) {
        Organization organization = getDirectoryAdminService().getOrganization(orgNumber);
        IModel<Organization> actorModel = new CompoundPropertyModel<Organization>(organization);
        Form<Organization> form = new Form<Organization>("actorForm", actorModel) {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onSubmit() {
                super.onSubmit();
                Organization organization = getModelObject();
                getDirectoryAdminService().saveActor(organization);
                PageParameters params = new PageParameters();
                params.add("orgNumber", orgNumber);
                setResponsePage(ActorPage.class, params);
            }

        };

        TextField<String> name = new TextField<String>("orgName");
        name.setRequired(true);
        form.add(name);
        TextField<String> orgno = new TextField<String>("orgNumber");
        orgno.setRequired(true);
        form.add(orgno);

        form.add(new TextField<String>("streetAddress"));
        form.add(new TextField<String>("postalCode"));
        form.add(new TextField<String>("postalAddress"));
        form.add(new TextField<String>("postOfficeBox"));
        form.add(new TextField<String>("description"));
        form.add(new TextField<String>("phoneNumber"));
        form.add(new TextField<String>("faxNumber"));
        form.add(new TextField<String>("labeledUri"));

        form.add(new SubmitLink("submit"));
        PageParameters cancelParams = new PageParameters();
        cancelParams.add("orgNumber", orgNumber);
        form.add(new BookmarkablePageLink<Void>("cancel", ActorPage.class, cancelParams));

        add(form);
    }
}

From source file:se.inera.axel.shs.broker.webconsole.directory.AddressEditPanel.java

License:Open Source License

public AddressEditPanel(String id, PageParameters params) {
    super(id);/*from   w  w w .  jav a  2 s . c  o m*/

    add(new FeedbackPanel("feedback"));

    final String productId = params.get("serialNumber").toString();
    final String orgNumber = params.get("orgNumber").toString();

    Address address = null;
    if (isEditMode(productId, orgNumber)) {
        address = getDirectoryAdminService().getAddress(orgNumber, productId);
    } else {
        address = new Address();
        address.setOrganizationNumber(orgNumber);
        if (nodeInfo.getOrganizationNumber().equals(orgNumber)) {
            address.setDeliveryMethods(nodeInfo.getExternalReceiveServiceUrl());
        }
    }

    final IModel<Address> addressModel = new CompoundPropertyModel<Address>(address);
    Form<Address> form = new Form<Address>("addressForm", addressModel) {

        @Override
        protected void onSubmit() {
            super.onSubmit();
            Address submittedAddress = getModelObject();
            Organization organization = getDirectoryAdminService().getOrganization(orgNumber);
            getDirectoryAdminService().saveAddress(organization, submittedAddress);

            PageParameters params = new PageParameters();
            params.add("orgNumber", orgNumber);
            setResponsePage(ActorPage.class, params);
        }

        private static final long serialVersionUID = 1L;
    };

    final TextField<String> deliveryMethods = new TextField<String>("deliveryMethods");
    deliveryMethods.setOutputMarkupId(true);
    deliveryMethods.setRequired(true);
    form.add(deliveryMethods);
    form.add(new TextField<String>("organizationNumber").setRequired(true).setEnabled(false));

    Map<String, DropdownProduct> products = getProducts(productId, orgNumber);

    IChoiceRenderer<String> productRenderer = new DropdownProductChoiceRenderer(products);
    DropDownChoice<String> ddcProducts = new DropDownChoice<String>("serialNumber",
            Model.ofList(new ArrayList(products.keySet())), productRenderer);

    if (isEditMode(productId, orgNumber)) {
        ddcProducts.setEnabled(false);
    }

    ddcProducts.setRequired(true);
    form.add(ddcProducts);

    form.add(new SubmitLink("submit"));
    PageParameters cancelParams = new PageParameters();
    cancelParams.add("orgNumber", orgNumber);
    form.add(new BookmarkablePageLink<Void>("cancel", ActorPage.class, cancelParams));

    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.directory.AgreementEditPanel.java

License:Open Source License

public AgreementEditPanel(String id, PageParameters params) {
    super(id);/*from   w  w  w .  java 2s .c  o m*/

    add(new FeedbackPanel("feedback"));

    final String orgNumber = params.get("orgno").toString();
    String serialNumber = params.get("serialNumber").toString();

    Agreement agreement = null;
    if (StringUtils.isNotBlank(serialNumber) && StringUtils.isNotBlank(orgNumber)) {
        Organization organization = getDirectoryAdminService().getOrganization(orgNumber);
        agreement = getDirectoryAdminService().lookupAgreement(organization, serialNumber);
    } else {
        agreement = new Agreement();
        agreement.setSerialNumber(UUID.randomUUID().toString());
        agreement.setPrincipal(orgNumber == null ? shsRouter.getOrgId() : orgNumber);
    }

    final IModel<Agreement> agreementModel = new CompoundPropertyModel<Agreement>(agreement);
    Form<Agreement> form = new Form<Agreement>("agreementForm", agreementModel) {

        @Override
        protected void onSubmit() {
            super.onSubmit();
            Agreement submittedAgreement = getModelObject();
            Organization organization = getDirectoryAdminService().getOrganization(orgNumber);
            try {
                getDirectoryAdminService().saveAgreement(organization, submittedAgreement);
            } catch (Exception e) {
                e.printStackTrace();
            }
            PageParameters params = new PageParameters();
            params.add("orgNumber", orgNumber);
            setResponsePage(ActorPage.class, params);
        }

        private static final long serialVersionUID = 1L;
    };

    final TextField<String> serialNumberField = new TextField<String>("serialNumber");
    serialNumberField.setOutputMarkupId(true);
    serialNumberField.setEnabled(false);
    serialNumberField.setRequired(true);
    form.add(serialNumberField);

    final TextField<String> productName = new TextField<String>("productName");
    productName.setOutputMarkupId(true);
    productName.setEnabled(false);
    form.add(productName);

    final Map<String, DropdownProduct> products = getProducts(agreement.getProductId(), orgNumber);

    IChoiceRenderer<String> productRenderer = new DropdownProductChoiceRenderer(products);
    DropDownChoice<String> ddcProducts = new DropDownChoice<String>("productId",
            Model.ofList(new ArrayList<String>(products.keySet())), productRenderer);
    ddcProducts.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Agreement agreement = agreementModel.getObject();
            DropdownProduct selectedProduct = products.get(agreement.getProductId());

            if (selectedProduct != null) {
                agreement.setProductName(selectedProduct.getProductName());
            } else {
                agreement.setProductName("");
            }

            target.add(productName);
        }

        private static final long serialVersionUID = 1L;
    });

    ddcProducts.setRequired(true);
    form.add(ddcProducts);

    form.add(new TextField<String>("principal").setRequired(true).setEnabled(false));
    form.add(getDeliveryConfirmationRadioGroup());

    form.add(new DropDownChoice<String>("transferType", Constant.TRANSFER_TYPE_LIST).setRequired(true));

    form.add(new TextField<String>("description"));
    form.add(new TextField<String>("error"));
    form.add(new TextField<String>("labeledUri"));

    form.add(new SubmitLink("submit"));
    PageParameters cancelParams = new PageParameters();
    cancelParams.add("orgNumber", orgNumber);
    form.add(new BookmarkablePageLink<Void>("cancel", ActorPage.class, cancelParams));

    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.directory.ProductTypeEditPanel.java

License:Open Source License

public ProductTypeEditPanel(String id, PageParameters params) {
    super(id);/*from  w  w w. j av a2  s  .c o  m*/

    add(new FeedbackPanel("feedback"));

    final String productId = params.get("productId").toString();
    final String orgNumber = params.get("orgNumber").toString();

    ProductType product;
    if (isEditMode(productId, orgNumber)) {
        product = getDirectoryAdminService().getProductType(orgNumber, productId);
    } else {
        product = new ProductType();
        product.setPrincipal(orgNumber == null ? shsRouter.getOrgId() : orgNumber);
    }

    final IModel<ProductType> productModel = new CompoundPropertyModel<>(product);
    Form<ProductType> form = new Form<ProductType>("productForm", productModel) {

        @Override
        protected void onSubmit() {
            super.onSubmit();
            ProductType submittedProductType = getModelObject();
            Organization organization = getDirectoryAdminService().getOrganization(orgNumber);
            getDirectoryAdminService().saveProduct(organization, submittedProductType);

            PageParameters params = new PageParameters();
            params.add("orgNumber", orgNumber);
            setResponsePage(ActorPage.class, params);
        }

        private static final long serialVersionUID = 1L;
    };

    final TextField<String> productName = new TextField<String>("productName");
    productName.setRequired(true);
    productName.setOutputMarkupId(true);
    productName.setEnabled(false);
    form.add(productName);

    TextField<String> principalField = new TextField<String>("principal");

    principalField.setEnabled(false);

    form.add(principalField.setRequired(true));
    form.add(new TextField<String>("description"));
    form.add(new TextField<String>("prodDescr"));
    form.add(new TextField<String>("labeledUri").setRequired(true));
    form.add(new TextField<String>("keywords"));
    form.add(new TextField<String>("preferredDeliveryMethod").setRequired(true));
    form.add(new TextField<String>("owner"));

    final Map<String, DropdownProduct> products = getProducts(productId, orgNumber);

    IChoiceRenderer<String> productRenderer = new DropdownProductChoiceRenderer(products);
    DropDownChoice<String> ddcProducts = new DropDownChoice<String>("serialNumber",
            Model.ofList(new ArrayList<String>(products.keySet())), productRenderer);
    ddcProducts.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            ProductType productFormObject = productModel.getObject();
            DropdownProduct selectedProduct = products.get(productFormObject.getSerialNumber());
            productFormObject.setProductName(selectedProduct.getProductName());
            target.add(productName);
        }

        private static final long serialVersionUID = 1L;
    });
    ddcProducts.setRequired(true);
    if (isEditMode(productId, orgNumber)) {
        ddcProducts.setEnabled(false);
    }
    form.add(ddcProducts);

    form.add(new SubmitLink("submit"));
    PageParameters cancelParams = new PageParameters();
    cancelParams.add("orgNumber", orgNumber);
    form.add(new BookmarkablePageLink<Void>("cancel", ActorPage.class, cancelParams));

    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.product.ProductFormPanel.java

License:Open Source License

/**
 * Constructor/*w  ww.  j a v a 2s . co m*/
 *
 * @param panelId
 * @param parameters
 */
public ProductFormPanel(final String panelId, final PageParameters parameters) {

    super(panelId);

    add(new FeedbackPanel("feedback"));

    final IModel<ShsProduct> product = getProduct(parameters);

    // Create form
    final Form<ShsProduct> form = new Form<ShsProduct>("productForm", product);

    form.add(new ControlGroupContainer(new TextField<String>("commonName")));
    TextField<String> uuidField = new TextField<String>("uuid");
    uuidField.setRequired(true);

    uuidField.setEnabled(!isEditMode(parameters));
    uuidField.add(new IValidator<String>() {

        @Override
        public void validate(IValidatable<String> validatable) {
            String value = validatable.getValue();
            if (!isEditMode(parameters)) {
                if (productAdminService.getProduct(value) != null) {
                    ValidationError error = new ValidationError();
                    error.addMessageKey("Exists");
                    error.setVariable("uuid", value);
                    validatable.error(error);
                }
            }
        }
    });

    form.add(new ControlGroupContainer(uuidField));

    form.add(new ControlGroupContainer(new TextField<String>("labeledURI")));
    form.add(new ControlGroupContainer(new TextArea<String>("description")));

    CheckBox respRequiredField = new CheckBox("respRequired") {
        private static final long serialVersionUID = 1L;

        @Override
        protected IModel<?> initModel() {
            return new YesNoBooleanConverterModel(super.initModel());
        }
    };

    form.add(new ControlGroupContainer(respRequiredField));

    form.add(new ControlGroupContainer(getPrincipalDropDownChoice()));

    form.add(getDataListView(product));
    form.add(new SubmitLink("addData") {
        @Override
        public void onSubmit() {
            product.getObject().getData().add(new Data());
        }

        private static final long serialVersionUID = 1L;
    }.setOutputMarkupId(true));

    form.add(getReplyDataListView(product));
    form.add(new SubmitLink("addReplyData") {
        @Override
        public void onSubmit() {
            product.getObject().getReplyData().add(new ReplyData());
        }

        private static final long serialVersionUID = 1L;
    }.setOutputMarkupId(true));

    form.add(new SubmitLink("showxml") {
        @Override
        public void onSubmit() {
            super.onSubmit();

            // The xml-view loads the model from the data store so we need to save it first.
            ShsProduct shsProduct = form.getModelObject();
            productAdminService.save(shsProduct);

            parameters.remove("view");
            parameters.add("view", "xml");
            parameters.add(AdminPageParameters.EDIT_MODE.toString(), true);
            parameters.add("uuid", ((ShsProduct) getParent().getDefaultModelObject()).getUuid());
            setResponsePage(EditProductPage.class, parameters);
        }

        private static final long serialVersionUID = 1L;
    });
    form.add(new SubmitLink("submit") {
        @Override
        public void onSubmit() {

            ShsProduct shsProduct = form.getModelObject();
            productAdminService.save(shsProduct);

            setResponsePage(ProductPage.class);
        }

        private static final long serialVersionUID = 1L;
    });
    add(form);
}

From source file:se.inera.axel.shs.broker.webconsole.product.ProductXmlPanel.java

License:Open Source License

/**
 * Constructor/*from  w w w .  j  ava  2  s  .  c  o  m*/
 * 
 * @param id
 * @param parameters
 */
public ProductXmlPanel(final String id, final PageParameters parameters) {
    super(id);

    add(new FeedbackPanel("feedback"));

    ShsProduct product = getProduct(parameters);

    marshaller = new ShsProductMarshaller(ObjectFactory.class.getClassLoader());
    String xml = marshaller.marshal(product);

    XmlForm xmlForm = new XmlForm("uuid1", xml);
    IModel<XmlForm> xmlModel = new CompoundPropertyModel<XmlForm>(xmlForm);

    Form<XmlForm> form = new Form<XmlForm>("productForm", xmlModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            super.onSubmit();
            XmlForm xmlForm = getModelObject();
            try {
                ShsProduct shsProduct = marshaller.unmarshal(xmlForm.getXml());
                parameters.add("uuid", shsProduct.getUuid());
                productAdminService.save(shsProduct);

                String view = parameters.get("view").toString();
                if (view != null && view.equals("form")) {
                    setResponsePage(EditProductPage.class, parameters);
                } else {
                    setResponsePage(ProductPage.class);
                }
            } catch (Exception e) {
                error(e.getMessage());
                e.printStackTrace();
            }
        }

    };
    form.add(new HiddenField<String>("uuid"));
    TextArea<String> xmlField = new TextArea<String>("xml");
    xmlField.add(new IValidator<String>() {

        @Override
        public void validate(IValidatable<String> validatable) {
            ShsProduct shsProduct = null;

            try {
                shsProduct = marshaller.unmarshal(validatable.getValue());
            } catch (XmlException e) {
                ValidationError error = new ValidationError();
                error.addMessageKey("xml.InvalidXml");
                validatable.error(error);
                return;
            }

            if (isEditMode(parameters)) {
                String currentUUID = parameters.get(CURRENT_UUID.toString()).toOptionalString();
                if (currentUUID != null && !currentUUID.equalsIgnoreCase(shsProduct.getUuid())) {
                    ValidationError error = new ValidationError();
                    error.addMessageKey("uuid.ReadOnly");
                    error.setVariable("originalUUID", currentUUID);
                    validatable.error(error);
                    return;
                }
            } else {
                if (productAdminService.getProduct(shsProduct.getUuid()) != null) {
                    ValidationError error = new ValidationError();
                    error.addMessageKey("Exists");
                    error.setVariable("uuid", shsProduct.getUuid());
                    validatable.error(error);
                    return;
                }
            }
        }
    });
    form.add(new ControlGroupContainer(xmlField));

    form.add(new SubmitLink("showform") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            super.onSubmit();
            parameters.remove("view");
            parameters.add("view", "form");
        }
    });
    form.add(new SubmitLink("submit"));
    add(form);
}