Example usage for org.apache.wicket.ajax.markup.html.form AjaxFallbackButton AjaxFallbackButton

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

Introduction

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

Prototype

public AjaxFallbackButton(String id, IModel<String> model, Form<?> form) 

Source Link

Document

Construct.

Usage

From source file:com.romeikat.datamessie.core.base.ui.panel.FileUploadPanel.java

License:Open Source License

private void initialize() {
    setTitle("File Upload");

    uploadForm = new Form<Void>("uploadForm");
    uploadForm.setMultiPart(true);// www.  j av  a  2 s.  c o  m
    add(uploadForm);

    // Input panel (only create once, so the same panel will be reused for future versions of
    // the FileUplodPanel)
    if (inputPanel == null) {
        inputPanel = getInputPanel("inputPanel");
    }
    uploadForm.add(inputPanel);

    final String[] fileUploadLabels = getFileUploadLabels();
    final boolean[] fileUploadRequireds = getFileUploadRequireds();
    final int numberOfFileUploads = fileUploadLabels.length;

    final String fileUploadLabelsText = numberOfFileUploads == 1 ? "Select file:" : "Select files:";
    final Label fileUploadsLabel = new Label("fileUploadsLabel", fileUploadLabelsText);
    uploadForm.add(fileUploadsLabel);

    final List<Integer> fileUploadNumbers = new ArrayList<Integer>(numberOfFileUploads);
    for (int i = 0; i < numberOfFileUploads; i++) {
        fileUploadNumbers.add(i);
    }
    fileUploadFields = new FileUploadField[numberOfFileUploads];
    final ListView<Integer> fileUploadList = new ListView<Integer>("fileUploadList", fileUploadNumbers) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<Integer> item) {
            final int numberOfFileUpload = item.getModelObject();
            // Label
            final String fileUploadLabelText = fileUploadLabels[numberOfFileUpload] + ":";
            final Label fileUploadLabel = new Label("fileUploadLabel", fileUploadLabelText);
            fileUploadLabel.setVisible(fileUploadLabelText != null);
            item.add(fileUploadLabel);
            // File upload
            final FileUploadField fileUploadField = new FileUploadField("fileUploadField");
            fileUploadFields[numberOfFileUpload] = fileUploadField;
            item.add(fileUploadField);
        }
    };
    uploadForm.add(fileUploadList);

    feedbackTextArea = new TextArea<String>("feedbackTextArea", feedbackModel);
    feedbackTextArea.setOutputMarkupId(true);
    uploadForm.add(feedbackTextArea);

    final AjaxFallbackButton submitButton = new AjaxFallbackButton("submitButton",
            Model.of(getSubmitButtonLabel()), uploadForm) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            // Process uploaded files
            final List<String> uploadedFileContents = new ArrayList<String>(numberOfFileUploads);
            for (int i = 0; i < numberOfFileUploads; i++) {
                // Get uploaded file content
                final FileUploadField fileUploadField = fileUploadFields[i];
                final FileUpload uploadedFile = fileUploadField.getFileUpload();
                final boolean fileUploadRequired = fileUploadRequireds[i];
                if (uploadedFile == null && fileUploadRequired) {
                    return;
                }
                final String uploadedFileContent;
                if (uploadedFile == null) {
                    uploadedFileContent = null;
                } else {
                    InputStream uploadStream;
                    try {
                        uploadStream = uploadedFile.getInputStream();
                    } catch (final IOException e) {
                        LOG.error("Could not read content from uploaded file", e);
                        return;
                    }
                    final Scanner uploadFileScanner = new Scanner(uploadStream, "UTF-8");
                    uploadedFileContent = uploadFileScanner.useDelimiter("\\A").next();
                    uploadFileScanner.close();
                }
                // Remember uploaded file content
                uploadedFileContents.add(uploadedFileContent);
            }
            // Process uploaded files
            try {
                processFileContents(inputPanel, uploadedFileContents);
            }
            // In case of error, show feedback
            catch (final FileProcessingException e) {
                feedbackModel.setObject(e.getMessage());
                target.add(feedbackTextArea);
                return;
            }
            // Otherwise, close
            modalContentWindow.close(target);
            // Update tasks immediately
            target.add(((AbstractAuthenticatedPage) getPage()).getTaskExecutionsPanel());
        }
    };
    uploadForm.add(submitButton);
}

From source file:org.dcm4chee.web.war.ae.CreateOrEditAETPage.java

License:LGPL

public CreateOrEditAETPage(final ModalWindow window, final AE ae, final AEListPanel panel) {
    super();//from ww  w .  j  av a 2  s .c o  m
    add(JavascriptPackageResource.getHeaderContribution(BaseWicketPage.class, "web3-utils.js"));
    final String oldType = ae.getAeGroup();
    final String oldTitle = ae.getPk() == -1 ? null : ae.getTitle();
    msgWin.setTitle("");
    add(msgWin);
    add(new WebMarkupContainer("create-ae-title").setVisible(ae.getPk() == -1));
    add(new WebMarkupContainer("edit-ae-title").setVisible(ae.getPk() != -1));

    setOutputMarkupId(true);
    final BaseForm form = new BaseForm("form");
    form.setResourceIdPrefix("ae.");
    add(form);
    CompoundPropertyModel<AE> model = new CompoundPropertyModel<AE>(ae);
    form.setDefaultModel(model);
    form.addLabeledTextField("title").add(new AETitleValidator()).setRequired(true)
            .add(FocusOnLoadBehaviour.newFocusAndSelectBehaviour());

    form.add(new Label("type.label",
            new StringResourceModel("ae.type.label", CreateOrEditAETPage.this, null, new Object[] { 1 })));
    AELicenseProviderSPI provider = AELicenseProviderManager.get(null).getProvider();
    List<String> aetTypes = new ArrayList<String>(
            provider.getAETypes(WebCfgDelegate.getInstance().getAETTypes()));
    if ((ae.getPk() != -1) && !aetTypes.contains(oldType))
        aetTypes.add(oldType);
    boolean nullAeTypeAllowed = aetTypes.remove(null);
    form.add((new DropDownChoice<String>("type-selection", new PropertyModel<String>(ae, "aeGroup"), aetTypes))
            .setNullValid(nullAeTypeAllowed).setRequired(!nullAeTypeAllowed)
            .add(new AbstractValidator<String>() {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onValidate(IValidatable<String> validatable) {

                    String newType = validatable.getValue();
                    if ((ae.getPk() != -1) && (oldType == null ? newType == null : oldType.equals(newType)))
                        return;
                    if (!AELicenseProviderManager.get(null).getProvider().allowAETCreation(newType)) {
                        HashMap<String, Object> vars = new HashMap<String, Object>();
                        vars.put("type", newType);
                        this.error(validatable, "ae.error.aetTypeDenied", vars);
                    }
                }
            }));
    form.addLabeledTextField("hostName").setRequired(true);
    form.addLabeledNumberTextField("port").add(new RangeValidator<Integer>(1, 65535));
    final CipherModel cipherModel = new CipherModel(ae, 3);
    form.add(new Label("ciphers1.label",
            new StringResourceModel("ae.ciphers", CreateOrEditAETPage.this, null, new Object[] { 1 })));
    form.add(new DropDownChoice<String>("ciphersuite1", cipherModel.getSingleCipherModel(0),
            CyphersuiteUtils.AVAILABLE_CIPHERSUITES));
    form.add(new Label("ciphers2.label",
            new StringResourceModel("ae.ciphers", CreateOrEditAETPage.this, null, new Object[] { 2 })));
    form.add(new DropDownChoice<String>("ciphersuite2", cipherModel.getSingleCipherModel(1),
            CyphersuiteUtils.AVAILABLE_CIPHERSUITES));
    form.add(new Label("ciphers3.label",
            new StringResourceModel("ae.ciphers", CreateOrEditAETPage.this, null, new Object[] { 3 })));
    form.add(new DropDownChoice<String>("ciphersuite3", cipherModel.getSingleCipherModel(2),
            CyphersuiteUtils.AVAILABLE_CIPHERSUITES));
    form.addLabeledTextField("description");
    form.addLabeledTextField("issuerOfPatientID");
    form.addLabeledTextField("issuerOfAccessionNumber");
    form.addLabeledDropDownChoice("fileSystemGroupID", null,
            ((FileSystemHomeLocal) JNDIUtils.lookup(FileSystemHomeLocal.JNDI_NAME)).listGroupIDs())
            .setNullValid(true);
    form.addLabeledTextField("wadoURL").add(new UrlValidator1().addAllowedNoneURLValue("DICOM_QR_ONLY")); //Wicket UrlValidator doesn't accept http://hostname:8080/web!
    form.addLabeledTextField("userID");
    form.add(new Label("password.label", new ResourceModel("ae.password")));
    form.add(new PasswordTextField("password").setResetPassword(false).setRequired(false));
    form.addLabeledTextField("stationName");
    form.addLabeledTextField("institution");
    form.addLabeledTextField("department");
    form.add(new Label("installed.label", new ResourceModel("ae.installed")));
    form.add(new AjaxCheckBox("installed") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
        }
    });

    form.add(new Label("emulateMPPS.label", new ResourceModel("ae.emulateMPPS")));
    form.add(new AjaxCheckBox("emulateMPPS", new IModel<Boolean>() {
        private static final long serialVersionUID = 1L;

        public void detach() {
        }

        public Boolean getObject() {
            return panel.getMppsEmulatedAETs().contains(ae.getTitle());
        }

        public void setObject(Boolean object) {
            if (object) {
                panel.getMppsEmulatedAETs().add(ae.getTitle());
            } else {
                panel.getMppsEmulatedAETs().remove(ae.getTitle());
            }
        }
    }) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.addComponent(this);
        }
    }.setOutputMarkupId(true).add(new TooltipBehaviour("ae.")));

    form.add(new AjaxFallbackButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                if (ae.getPk() == -1) {
                    try {
                        ((AEHomeLocal) JNDIUtils.lookup(AEHomeLocal.JNDI_NAME)).findByTitle(ae.getTitle());
                        msgWin.show(target, new ResourceModel("ae.error.duplicateAE").wrapOnAssignment(this));
                        return;
                    } catch (Exception ignore) {
                    }
                }
                AEDelegate.getInstance().updateOrCreate(ae);
                AEDelegate.getInstance().notifyAEChange(oldTitle, ae.getTitle());

                panel.updateAETList();
                target.addComponent(form);
                window.close(target);
            } catch (Exception e) {
                msgWin.show(target,
                        new ResourceModel(
                                ae.getPk() == -1 ? "ae.error.create.failed" : "ae.error.update.failed")
                                        .wrapOnAssignment(this));
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.addComponent(form);
        }
    });
    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }
    }.setDefaultFormProcessing(false));

    final DicomEchoWindow mw = new DicomEchoWindow("echoPanel", true);
    mw.setWindowClosedCallback(new WindowClosedCallback() {

        private static final long serialVersionUID = 1L;

        public void onClose(AjaxRequestTarget target) {
            cipherModel.update();
            target.addComponent(CreateOrEditAETPage.this);
        }
    });
    add(mw);
    form.add(new AjaxButton("echo", new ResourceModel("ae.echoButton")) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            mw.show(target, ae);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.addComponent(form);
        }
    });
    add(new Label("result-message", new Model<String>("")));
}

From source file:org.dcm4chee.web.war.common.EditDicomObjectPanel.java

License:LGPL

public EditDicomObjectPanel(String id, final ModalWindow window, DicomObject dcmObj, String attrModelName) {
    super(id);/*  w  w  w  .  j av a2 s .co  m*/
    editable = new EditableDicomAttributes(attrModelName);
    add(mw);
    try {
        add(new Label("title", new ResourceModel("dicom.edit.title." + attrModelName)));
    } catch (Exception x) {
        add(new Label("title", new Model<String>("DICOM Edit")));
    }
    add(new AjaxCheckBox("allowAll", new PropertyModel<Boolean>(editable, "allowAll")) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            System.out.println("allowAll changed: allowAll" + editable.isAllowAll());
            target.addComponent(table);
        }

    }.add(new SecurityBehavior("edit:allowAll")));
    add(new Label("allowAllLabel", new ResourceModel("edit.allowAll"))
            .add(new SecurityBehavior("edit:allowAll")));
    this.dcmObj = new BasicDicomObject();
    dcmObj.copyTo(this.dcmObj);
    Form<?> form = new Form<Object>("form");
    add(form);
    table = new WebMarkupContainer("table");
    addHdrLabels(table);
    table.setOutputMarkupId(true);
    form.add(table);
    RepeatingView rv = new RepeatingView("elements") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onPopulate() {
            removeAll();
            addDicomObject(this, EditDicomObjectPanel.this.dcmObj, "", new int[0]);
        }
    };
    table.add(rv);
    form.add(new AjaxFallbackButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                EditDicomObjectPanel.this.onSubmit();
                window.close(target);
            } catch (WicketExceptionWithMsgKey e) {
                resultMessage.setObject(this.getString(e.getMsgKey()));
                target.addComponent(form);
            } catch (Exception e) {
                resultMessage.setObject(e.getLocalizedMessage());
                target.addComponent(form);
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            target.addComponent(form);
        }
    });
    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            EditDicomObjectPanel.this.onCancel();
            window.close(target);
        }
    }.setDefaultFormProcessing(false));
    form.add(new Label("result-message", (resultMessage = new Model<String>(""))));
}

From source file:org.dcm4chee.web.war.common.SimpleEditDicomObjectPanel.java

License:LGPL

public SimpleEditDicomObjectPanel(String id, final ModalWindow window, AbstractDicomModel dcmModel,
        String title, final int[][] tagPaths, final boolean close, IModel<Boolean> useFnGn) {
    super(id);//from www  .  j a  v a  2  s  . c o m
    this.setOutputMarkupId(true);
    this.useFnGn = useFnGn;
    window.setCloseButtonCallback(new CloseButtonCallback() {
        private static final long serialVersionUID = 1L;

        public boolean onCloseButtonClicked(AjaxRequestTarget target) {
            onClose();
            return true;
        }
    });

    this.dcmObj = new BasicDicomObject();
    this.tagPaths = tagPaths;
    dcmModel.getDataset().copyTo(this.dcmObj);
    add(new Label("title", new Model<String>(title)));
    add(form = new BaseForm("form"));
    form.setOutputMarkupId(true);
    addHdrLabels(form);
    RepeatingView rv = new RepeatingView("elements") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onPopulate() {
            removeAll();
            addDicomObject(this, tagPaths);
        }
    };
    form.add(rv);
    form.add(new AjaxFallbackButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                SimpleEditDicomObjectPanel.this.onSubmit();
                getPage().setOutputMarkupId(true);
                target.addComponent(getPage());
                if (close)
                    window.close(target);
            } catch (WicketExceptionWithMsgKey e) {
                resultMessage.setObject(this.getString(e.getMsgKey()));
                target.addComponent(SimpleEditDicomObjectPanel.this);
            } catch (Exception e) {
                resultMessage.setObject(e.getLocalizedMessage());
                target.addComponent(SimpleEditDicomObjectPanel.this);
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            BaseForm.addFormComponentsToAjaxRequestTarget(target, form);
        }
    });
    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            SimpleEditDicomObjectPanel.this.onCancel();
            window.close(target);
        }
    }.setDefaultFormProcessing(false));
    form.add(new Label("result-message", (resultMessage = new Model<String>(""))));
}

From source file:org.dcm4chee.wizard.edit.CreateOrEditApplicationEntityPage.java

License:LGPL

public CreateOrEditApplicationEntityPage(final ModalWindow window, final ApplicationEntityModel aeModel,
        final ConfigTreeNode deviceNode) {
    super();//from  w w w . j a  v  a  2 s  .c o  m

    add(new WebMarkupContainer("create-applicationEntity-title").setVisible(aeModel == null));
    add(new WebMarkupContainer("edit-applicationEntity-title").setVisible(aeModel != null));

    setOutputMarkupId(true);
    final ExtendedForm form = new ExtendedForm("form");
    form.setResourceIdPrefix("dicom.edit.applicationEntity.");
    add(form);

    installedRendererChoices = new ArrayList<String>();
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.true.text").wrapOnAssignment(this).getObject());
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.false.text").wrapOnAssignment(this).getObject());

    ArrayList<ConnectionModel> connectionReferences = new ArrayList<ConnectionModel>();

    try {
        oldAETitle = aeModel == null ? null : aeModel.getApplicationEntity().getAETitle();

        isProxy = (((DeviceModel) deviceNode.getModel()).getDevice()
                .getDeviceExtension(ProxyDeviceExtension.class) != null);

        hl7Applications = Arrays.asList(ConfigTreeProvider.get().getUniqueHL7ApplicationNames());

        connectionReferencesModel = new Model<ArrayList<ConnectionModel>>();
        connectionReferencesModel.setObject(new ArrayList<ConnectionModel>());
        for (Connection connection : ((DeviceModel) deviceNode.getModel()).getDevice().listConnections()) {
            ConnectionModel connectionReference = new ConnectionModel(connection, 0);
            connectionReferences.add(connectionReference);
            if (aeModel != null && aeModel.getApplicationEntity().getConnections().contains(connection))
                connectionReferencesModel.getObject().add(connectionReference);
        }

        proxyPIXConsumerApplicationModel = Model.of();
        remotePIXManagerApplicationModel = Model.of();
        fallbackDestinationAETModel = Model.of();
        if (aeModel == null) {
            aeTitleModel = Model.of();
            associationAcceptorModel = Model.of();
            associationInitiatorModel = Model.of();

            acceptDataOnFailedNegotiationModel = Model.of(false);
            enableAuditLogModel = Model.of(false);
            spoolDirectoryModel = Model.of();
            deleteFailedDataWithoutRetryConfigurationModel = Model.of(false);
            mergeStgCmtMessagesUsingANDLogicModel = Model.of(false);

            applicationClustersModel = new StringArrayModel(null);
            descriptionModel = Model.of();
            installedModel = Model.of();
            calledAETitlesModel = new StringArrayModel(null);
            callingAETitlesModel = new StringArrayModel(null);
            supportedCharacterSetsModel = new StringArrayModel(null);
            vendorDataModel = Model.of("size 0");
        } else {
            ProxyAEExtension proxyAEExtension = aeModel.getApplicationEntity()
                    .getAEExtension(ProxyAEExtension.class);

            aeTitleModel = Model.of(aeModel.getApplicationEntity().getAETitle());
            associationAcceptorModel = Model.of(aeModel.getApplicationEntity().isAssociationAcceptor());
            associationInitiatorModel = Model.of(aeModel.getApplicationEntity().isAssociationInitiator());

            acceptDataOnFailedNegotiationModel = Model
                    .of(isProxy ? proxyAEExtension.isAcceptDataOnFailedAssociation() : false);
            enableAuditLogModel = Model.of(isProxy ? proxyAEExtension.isEnableAuditLog() : false);
            spoolDirectoryModel = Model.of(isProxy ? proxyAEExtension.getSpoolDirectory() : null);
            deleteFailedDataWithoutRetryConfigurationModel = Model
                    .of(isProxy ? proxyAEExtension.isDeleteFailedDataWithoutRetryConfiguration() : false);
            mergeStgCmtMessagesUsingANDLogicModel = Model
                    .of(isProxy ? proxyAEExtension.isMergeStgCmtMessagesUsingANDLogic() : false);

            applicationClustersModel = new StringArrayModel(
                    aeModel.getApplicationEntity().getApplicationClusters());
            descriptionModel = Model.of(aeModel.getApplicationEntity().getDescription());
            installedModel = Model.of(aeModel.getApplicationEntity().getInstalled());
            calledAETitlesModel = new StringArrayModel(
                    aeModel.getApplicationEntity().getPreferredCalledAETitles());
            callingAETitlesModel = new StringArrayModel(
                    aeModel.getApplicationEntity().getPreferredCallingAETitles());
            supportedCharacterSetsModel = new StringArrayModel(
                    aeModel.getApplicationEntity().getSupportedCharacterSets());
            vendorDataModel = Model.of("size " + aeModel.getApplicationEntity().getVendorData().length);

            if (isProxy) {
                proxyPIXConsumerApplicationModel = Model.of(proxyAEExtension.getProxyPIXConsumerApplication());
                remotePIXManagerApplicationModel = Model.of(proxyAEExtension.getRemotePIXManagerApplication());
                fallbackDestinationAETModel = Model.of(proxyAEExtension.getFallbackDestinationAET());
            }
        }
    } catch (ConfigurationException ce) {
        log.error(this.getClass().toString() + ": " + "Error retrieving application entity data: "
                + ce.getMessage());
        log.debug("Exception", ce);
        throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
    }

    form.add(new Label("aeTitle.label", new ResourceModel("dicom.edit.applicationEntity.aeTitle.label")))
            .add(new TextField<String>("aeTitle", aeTitleModel)
                    .add(new AETitleValidator(aeTitleModel.getObject())).setRequired(true)
                    .add(FocusOnLoadBehavior.newFocusAndSelectBehaviour()));

    form.add(new Label("associationAcceptor.label",
            new ResourceModel("dicom.edit.applicationEntity.associationAcceptor.label")))
            .add(new CheckBox("associationAcceptor", associationAcceptorModel));
    form.add(new Label("associationInitiator.label",
            new ResourceModel("dicom.edit.applicationEntity.associationInitiator.label")))
            .add(new CheckBox("associationInitiator", associationInitiatorModel));

    form.add(new CheckBoxMultipleChoice<ConnectionModel>("connections", connectionReferencesModel,
            new Model<ArrayList<ConnectionModel>>(connectionReferences),
            new IChoiceRenderer<ConnectionModel>() {

                private static final long serialVersionUID = 1L;

                public Object getDisplayValue(ConnectionModel connectionReference) {
                    Connection connection = null;
                    try {
                        connection = connectionReference.getConnection();
                    } catch (Exception e) {
                        log.error(this.getClass().toString() + ": " + "Error obtaining connection: "
                                + e.getMessage());
                        log.debug("Exception", e);
                        throw new ModalWindowRuntimeException(e.getLocalizedMessage());
                    }
                    String location = connection.getHostname()
                            + (connection.getPort() == -1 ? "" : ":" + connection.getPort());
                    return connection.getCommonName() != null
                            ? connection.getCommonName() + " (" + location + ")"
                            : location;
                }

                public String getIdValue(ConnectionModel model, int index) {
                    return String.valueOf(index);
                }
            }).add(new ConnectionReferenceValidator())
                    .add(new ConnectionProtocolValidator(Connection.Protocol.DICOM)));

    WebMarkupContainer proxyContainer = new WebMarkupContainer("proxy") {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return isProxy;
        }
    };
    form.add(proxyContainer);

    proxyContainer
            .add(new Label("acceptDataOnFailedNegotiation.label",
                    new ResourceModel("dicom.edit.applicationEntity.proxy.acceptDataOnFailedNegotiation.label"))
                            .setVisible(isProxy))
            .add(new CheckBox("acceptDataOnFailedNegotiation", acceptDataOnFailedNegotiationModel)
                    .setVisible(isProxy));

    proxyContainer
            .add(new Label("enableAuditLog.label",
                    new ResourceModel("dicom.edit.applicationEntity.proxy.enableAuditLog.label"))
                            .setVisible(isProxy))
            .add(new CheckBox("enableAuditLog", enableAuditLogModel).setVisible(isProxy));

    proxyContainer
            .add(new Label("spoolDirectory.label",
                    new ResourceModel("dicom.edit.applicationEntity.proxy.spoolDirectory.label"))
                            .setVisible(isProxy))
            .add(new TextField<String>("spoolDirectory", spoolDirectoryModel).setRequired(true)
                    .setVisible(isProxy));

    proxyContainer
            .add(new Label("deleteFailedDataWithoutRetryConfiguration.label", new ResourceModel(
                    "dicom.edit.applicationEntity.proxy.deleteFailedDataWithoutRetryConfiguration.label")))
            .add(new CheckBox("deleteFailedDataWithoutRetryConfiguration",
                    deleteFailedDataWithoutRetryConfigurationModel));

    proxyContainer
            .add(new Label("mergeStgCmtMessagesUsingANDLogic.label",
                    new ResourceModel(
                            "dicom.edit.applicationEntity.proxy.mergeStgCmtMessagesUsingANDLogic.label")))
            .add(new CheckBox("mergeStgCmtMessagesUsingANDLogic", mergeStgCmtMessagesUsingANDLogicModel));

    final WebMarkupContainer optionalContainer = new WebMarkupContainer("optional");
    form.add(optionalContainer.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));

    optionalContainer
            .add(new Label("applicationClusters.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.applicationClusters.label")))
            .add(new TextArea<String>("applicationClusters", applicationClustersModel));

    optionalContainer
            .add(new Label("description.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.description.label")))
            .add(new TextField<String>("description", descriptionModel));

    optionalContainer
            .add(new Label("installed.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.installed.label")))
            .add(new DropDownChoice<Boolean>("installed", installedModel,
                    Arrays.asList(new Boolean[] { new Boolean(true), new Boolean(false) }),
                    new IChoiceRenderer<Boolean>() {

                        private static final long serialVersionUID = 1L;

                        public String getDisplayValue(Boolean object) {
                            return object.booleanValue() ? installedRendererChoices.get(0)
                                    : installedRendererChoices.get(1);
                        }

                        public String getIdValue(Boolean object, int index) {
                            return String.valueOf(index);
                        }
                    }).setNullValid(true));

    optionalContainer
            .add(new Label("calledAETitles.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.calledAETitles.label")))
            .add(new TextArea<String>("calledAETitles", calledAETitlesModel));

    optionalContainer
            .add(new Label("callingAETitles.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.callingAETitles.label")))
            .add(new TextArea<String>("callingAETitles", callingAETitlesModel));

    optionalContainer
            .add(new Label("supportedCharacterSets.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.supportedCharacterSets.label")))
            .add(new TextArea<String>("supportedCharacterSets", supportedCharacterSetsModel));

    optionalContainer
            .add(new Label("vendorData.label",
                    new ResourceModel("dicom.edit.applicationEntity.optional.vendorData.label")))
            .add(new Label("vendorData", vendorDataModel));

    WebMarkupContainer optionalProxyContainer = new WebMarkupContainer("proxy");
    optionalContainer.add(optionalProxyContainer.setVisible(isProxy));

    final DropDownChoice<String> proxyPIXConsumerApplicationDropDownChoice = new DropDownChoice<String>(
            "proxyPIXConsumerApplication", proxyPIXConsumerApplicationModel, hl7Applications);
    optionalProxyContainer
            .add(new Label("proxyPIXConsumerApplication.label",
                    new ResourceModel(
                            "dicom.edit.applicationEntity.optional.proxy.proxyPIXConsumerApplication.label")))
            .add(proxyPIXConsumerApplicationDropDownChoice.setNullValid(true).setOutputMarkupId(true)
                    .setOutputMarkupPlaceholderTag(true));

    final TextField<String> proxyPIXConsumerApplicationTextField = new TextField<String>(
            "proxyPIXConsumerApplication.freetext", proxyPIXConsumerApplicationModel);
    optionalProxyContainer.add(proxyPIXConsumerApplicationTextField.setVisible(false).setOutputMarkupId(true)
            .setOutputMarkupPlaceholderTag(true));

    final Model<Boolean> toggleProxyPIXConsumerApplicationModel = Model.of(false);
    if (aeModel != null && proxyPIXConsumerApplicationModel.getObject() != null
            && !hl7Applications.contains(proxyPIXConsumerApplicationModel.getObject())) {
        toggleProxyPIXConsumerApplicationModel.setObject(true);
        proxyPIXConsumerApplicationTextField.setVisible(true);
        proxyPIXConsumerApplicationDropDownChoice.setVisible(false);
    }

    optionalProxyContainer
            .add(new AjaxCheckBox("toggleProxyPIXConsumerApplication", toggleProxyPIXConsumerApplicationModel) {

                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    proxyPIXConsumerApplicationDropDownChoice
                            .setVisible(!toggleProxyPIXConsumerApplicationModel.getObject());
                    proxyPIXConsumerApplicationTextField
                            .setVisible(toggleProxyPIXConsumerApplicationModel.getObject());
                    target.add(proxyPIXConsumerApplicationDropDownChoice);
                    target.add(proxyPIXConsumerApplicationTextField);
                }
            });

    final DropDownChoice<String> remotePIXManagerApplicationDropDownChoice = new DropDownChoice<String>(
            "remotePIXManagerApplication", remotePIXManagerApplicationModel, hl7Applications);
    optionalProxyContainer
            .add(new Label("remotePIXManagerApplication.label",
                    new ResourceModel(
                            "dicom.edit.applicationEntity.optional.proxy.remotePIXManagerApplication.label")))
            .add(remotePIXManagerApplicationDropDownChoice.setNullValid(true).setOutputMarkupId(true)
                    .setOutputMarkupPlaceholderTag(true));

    final TextField<String> remotePIXManagerApplicationTextField = new TextField<String>(
            "remotePIXManagerApplication.freetext", remotePIXManagerApplicationModel);
    optionalProxyContainer.add(remotePIXManagerApplicationTextField.setVisible(false).setOutputMarkupId(true)
            .setOutputMarkupPlaceholderTag(true));

    final Model<Boolean> toggleRemotePIXManagerApplicationModel = Model.of(false);
    if (aeModel != null && remotePIXManagerApplicationModel.getObject() != null
            && !hl7Applications.contains(remotePIXManagerApplicationModel.getObject())) {
        toggleRemotePIXManagerApplicationModel.setObject(true);
        remotePIXManagerApplicationTextField.setVisible(true);
        remotePIXManagerApplicationDropDownChoice.setVisible(false);
    }

    optionalProxyContainer
            .add(new AjaxCheckBox("toggleRemotePIXManagerApplication", toggleRemotePIXManagerApplicationModel) {

                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    remotePIXManagerApplicationDropDownChoice
                            .setVisible(!toggleRemotePIXManagerApplicationModel.getObject());
                    remotePIXManagerApplicationTextField
                            .setVisible(toggleRemotePIXManagerApplicationModel.getObject());
                    target.add(remotePIXManagerApplicationDropDownChoice);
                    target.add(remotePIXManagerApplicationTextField);
                }
            });

    List<String> uniqueAETitles = null;
    if (isProxy)
        try {
            uniqueAETitles = Arrays.asList(ConfigTreeProvider.get().getUniqueAETitles());
            Collections.sort(uniqueAETitles);
        } catch (ConfigurationException ce) {
            log.error(this.getClass().toString() + ": " + "Error retrieving unique ae titles: "
                    + ce.getMessage());
            log.debug("Exception", ce);
            throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
        }

    final DropDownChoice<String> fallbackDestinationAETDropDownChoice = new DropDownChoice<String>(
            "fallbackDestinationAET", fallbackDestinationAETModel, uniqueAETitles);
    optionalProxyContainer
            .add(new Label("fallbackDestinationAET.label",
                    new ResourceModel(
                            "dicom.edit.applicationEntity.optional.proxy.fallbackDestinationAET.label")))
            .add(fallbackDestinationAETDropDownChoice.setNullValid(true).setOutputMarkupId(true)
                    .setOutputMarkupPlaceholderTag(true));

    final TextField<String> fallbackDestinationAETTextField = new TextField<String>(
            "fallbackDestinationAET.freetext", fallbackDestinationAETModel);
    optionalProxyContainer.add(fallbackDestinationAETTextField.setVisible(false).setOutputMarkupId(true)
            .setOutputMarkupPlaceholderTag(true));

    final Model<Boolean> toggleFallbackDestinationAETModel = Model.of(false);
    if (aeModel != null && fallbackDestinationAETModel.getObject() != null
            && !uniqueAETitles.contains(fallbackDestinationAETModel.getObject())) {
        toggleFallbackDestinationAETModel.setObject(true);
        fallbackDestinationAETTextField.setVisible(true);
        fallbackDestinationAETDropDownChoice.setVisible(false);
    }

    optionalProxyContainer
            .add(new AjaxCheckBox("toggleFallbackDestinationAET", toggleFallbackDestinationAETModel) {

                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    fallbackDestinationAETDropDownChoice
                            .setVisible(!toggleFallbackDestinationAETModel.getObject());
                    fallbackDestinationAETTextField.setVisible(toggleFallbackDestinationAETModel.getObject());
                    target.add(fallbackDestinationAETDropDownChoice);
                    target.add(fallbackDestinationAETTextField);
                }
            });

    form.add(new Label("toggleOptional.label", new ResourceModel("dicom.edit.toggleOptional.label")))
            .add(new AjaxCheckBox("toggleOptional", new Model<Boolean>()) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.add(optionalContainer.setVisible(this.getModelObject()));
                }
            });

    form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                ApplicationEntity applicationEntity = aeModel == null
                        ? new ApplicationEntity(aeTitleModel.getObject())
                        : aeModel.getApplicationEntity();

                applicationEntity.setAETitle(aeTitleModel.getObject());
                applicationEntity.setAssociationAcceptor(associationAcceptorModel.getObject());
                applicationEntity.setAssociationInitiator(associationInitiatorModel.getObject());
                applicationEntity.getConnections().clear();
                for (ConnectionModel connectionReference : connectionReferencesModel.getObject())
                    for (Connection connection : ((DeviceModel) deviceNode.getModel()).getDevice()
                            .listConnections())
                        if (connectionReference.getConnection().getHostname().equals(connection.getHostname())
                                && connectionReference.getConnection().getPort() == connection.getPort())
                            applicationEntity.addConnection(connection);

                applicationEntity.setApplicationClusters(applicationClustersModel.getArray());
                applicationEntity.setDescription(descriptionModel.getObject());
                applicationEntity.setInstalled(installedModel.getObject());
                applicationEntity.setPreferredCalledAETitles(calledAETitlesModel.getArray());
                applicationEntity.setPreferredCallingAETitles(callingAETitlesModel.getArray());
                applicationEntity.setSupportedCharacterSets(supportedCharacterSetsModel.getArray());

                if (isProxy) {
                    ProxyAEExtension proxyAEExtension = applicationEntity
                            .getAEExtension(ProxyAEExtension.class);
                    if (proxyAEExtension == null) {
                        proxyAEExtension = new ProxyAEExtension();
                        applicationEntity.addAEExtension(proxyAEExtension);
                    }
                    proxyAEExtension
                            .setAcceptDataOnFailedAssociation(acceptDataOnFailedNegotiationModel.getObject());
                    proxyAEExtension.setEnableAuditLog(enableAuditLogModel.getObject());
                    proxyAEExtension.setSpoolDirectory(spoolDirectoryModel.getObject());
                    proxyAEExtension.setDeleteFailedDataWithoutRetryConfiguration(
                            deleteFailedDataWithoutRetryConfigurationModel.getObject());
                    proxyAEExtension
                            .setProxyPIXConsumerApplication(proxyPIXConsumerApplicationModel.getObject());
                    proxyAEExtension
                            .setRemotePIXManagerApplication(remotePIXManagerApplicationModel.getObject());
                    proxyAEExtension.setFallbackDestinationAET(fallbackDestinationAETModel.getObject());
                    proxyAEExtension.setMergeStgCmtMessagesUsingANDLogic(
                            mergeStgCmtMessagesUsingANDLogicModel.getObject());

                    TransferCapabilitiesUtils.addTCsToAE(applicationEntity);
                }
                if (aeModel != null) {
                    if (!"*".equals(oldAETitle))
                        ConfigTreeProvider.get().unregisterAETitle(oldAETitle);
                } else
                    ((DeviceModel) deviceNode.getModel()).getDevice().addApplicationEntity(applicationEntity);
                ConfigTreeProvider.get().mergeDevice(applicationEntity.getDevice());
                if (!"*".equals(applicationEntity.getAETitle()))
                    ConfigTreeProvider.get().registerAETitle(applicationEntity.getAETitle());
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying application entity: "
                        + e.getMessage());
                log.debug("Exception", e);
                throw new ModalWindowRuntimeException(e.getLocalizedMessage());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.add(form);
        }
    });

    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget arg0, Form<?> arg1) {
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.dcm4chee.wizard.edit.CreateOrEditAuditLoggerPage.java

License:LGPL

public CreateOrEditAuditLoggerPage(final ModalWindow window, final AuditLoggerModel auditLoggerModel,
        final ConfigTreeNode deviceNode) {
    super();//from   w w  w. ja v a 2 s .  c o m

    add(new WebMarkupContainer("create-audit-logger-title").setVisible(auditLoggerModel == null));
    add(new WebMarkupContainer("edit-audit-logger-title").setVisible(auditLoggerModel != null));

    setOutputMarkupId(true);
    final ExtendedForm form = new ExtendedForm("form");
    form.setResourceIdPrefix("dicom.edit.audit-logger.");
    add(form);

    installedRendererChoices = new ArrayList<String>();
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.true.text").wrapOnAssignment(this).getObject());
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.false.text").wrapOnAssignment(this).getObject());

    ArrayList<ConnectionModel> connectionReferences = new ArrayList<ConnectionModel>();
    List<String> deviceList = null;

    try {
        connectionReferencesModel = new Model<ArrayList<ConnectionModel>>();
        connectionReferencesModel.setObject(new ArrayList<ConnectionModel>());
        for (Connection connection : ((DeviceModel) deviceNode.getModel()).getDevice().listConnections()) {
            ConnectionModel connectionReference = new ConnectionModel(connection, 0);
            connectionReferences.add(connectionReference);
            if (auditLoggerModel != null
                    && auditLoggerModel.getAuditLogger().getConnections().contains(connection))
                connectionReferencesModel.getObject().add(connectionReference);
        }

        deviceList = ((WizardApplication) getApplication()).getDicomConfigurationManager().listDevices();
        Collections.sort(deviceList);

        arrDeviceNameModel = Model.of();
        if (auditLoggerModel == null) {
            applicationNameModel = Model.of();
            auditEnterpriseSiteIDModel = Model.of();
            auditSourceIDModel = Model.of();
            auditSourceTypeCodesModel = new StringArrayModel(null);
            encodingModel = Model.of("UTF-8");
            facilityModel = Model.of(AuditLogger.Facility.authpriv);
            formatXMLModel = Model.of();
            includeBOMModel = Model.of();
            installedModel = Model.of();
            majorFailureSeverityModel = Model.of(AuditLogger.Severity.crit);
            messageIDModel = Model.of(AuditLogger.MESSAGE_ID);
            minorFailureSeverityModel = Model.of(AuditLogger.Severity.warning);
            schemaURIModel = Model.of();
            seriousFailureSeverityModel = Model.of(AuditLogger.Severity.err);
            successSeverityModel = Model.of(AuditLogger.Severity.notice);
            timestampInUTCModel = Model.of();
        } else {
            AuditLogger auditLogger = auditLoggerModel.getAuditLogger();
            applicationNameModel = Model.of(auditLogger.getApplicationName());
            auditEnterpriseSiteIDModel = Model.of(auditLogger.getAuditEnterpriseSiteID());
            if (auditLogger.getAuditRecordRepositoryDevice() != null)
                arrDeviceNameModel = Model.of(auditLogger.getAuditRecordRepositoryDevice().getDeviceName());
            Collections.sort(deviceList);
            auditSourceIDModel = Model.of(auditLogger.getAuditSourceID());
            auditSourceTypeCodesModel = new StringArrayModel(auditLogger.getAuditSourceTypeCodes());
            encodingModel = Model.of(auditLogger.getEncoding());
            facilityModel = Model.of(auditLogger.getFacility());
            formatXMLModel = Model.of(auditLogger.isFormatXML());
            includeBOMModel = Model.of(auditLogger.isIncludeBOM());
            installedModel = Model.of(auditLogger.getInstalled());
            majorFailureSeverityModel = Model.of(auditLogger.getMajorFailureSeverity());
            messageIDModel = Model.of(auditLogger.getMessageID());
            minorFailureSeverityModel = Model.of(auditLogger.getMinorFailureSeverity());
            schemaURIModel = Model.of(auditLogger.getSchemaURI());
            seriousFailureSeverityModel = Model.of(auditLogger.getSeriousFailureSeverity());
            successSeverityModel = Model.of(auditLogger.getSuccessSeverity());
            timestampInUTCModel = Model.of(auditLogger.isTimestampInUTC());
        }
    } catch (ConfigurationException ce) {
        log.error(this.getClass().toString() + ": " + "Error retrieving audit logger data: " + ce.getMessage());
        log.debug("Exception", ce);
        throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
    }

    form.add(new Label("applicationName.label",
            new ResourceModel("dicom.edit.audit-logger.applicationName.label")))
            .add(new TextField<String>("applicationName", applicationNameModel).setRequired(true)
                    .add(FocusOnLoadBehavior.newFocusAndSelectBehaviour()));

    form.add(new CheckBoxMultipleChoice<ConnectionModel>("connections", connectionReferencesModel,
            new Model<ArrayList<ConnectionModel>>(connectionReferences),
            new IChoiceRenderer<ConnectionModel>() {

                private static final long serialVersionUID = 1L;

                public Object getDisplayValue(ConnectionModel connectionReference) {
                    Connection connection = null;
                    try {
                        connection = connectionReference.getConnection();
                    } catch (Exception e) {
                        log.error(this.getClass().toString() + ": " + "Error obtaining connection: "
                                + e.getMessage());
                        log.debug("Exception", e);
                        throw new ModalWindowRuntimeException(e.getLocalizedMessage());
                    }
                    String location = connection.getHostname()
                            + (connection.getPort() == -1 ? "" : ":" + connection.getPort());
                    return connection.getCommonName() != null
                            ? connection.getCommonName() + " (" + location + ")"
                            : location;
                }

                public String getIdValue(ConnectionModel model, int index) {
                    return String.valueOf(index);
                }
            }).add(new ConnectionReferenceValidator()).add(new ConnectionProtocolValidator(
                    Connection.Protocol.SYSLOG_TLS, Connection.Protocol.SYSLOG_UDP)));

    DeviceListValidator deviceListValidator = null;
    if (arrDeviceNameModel.getObject() != null && !deviceList.contains(arrDeviceNameModel.getObject())) {
        deviceList.add(0, arrDeviceNameModel.getObject());
        deviceListValidator = new DeviceListValidator();
    }

    DropDownChoice<String> arrDeviceNameDropDownChoice;
    form.add(new Label("arrDeviceName.label", new ResourceModel("dicom.edit.audit-logger.arrDeviceName.label")))
            .add((arrDeviceNameDropDownChoice = new DropDownChoice<String>("arrDeviceName", arrDeviceNameModel,
                    deviceList)).setNullValid(false).setRequired(true));
    if (arrDeviceNameModel.getObject() == null)
        arrDeviceNameModel.setObject(deviceList.get(0));
    if (deviceListValidator != null)
        arrDeviceNameDropDownChoice.add(deviceListValidator);

    final WebMarkupContainer optionalContainer = new WebMarkupContainer("optional");
    form.add(optionalContainer.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));

    form.add(new Label("toggleOptional.label", new ResourceModel("dicom.edit.toggleOptional.label")))
            .add(new AjaxCheckBox("toggleOptional", new Model<Boolean>()) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.add(optionalContainer.setVisible(this.getModelObject()));
                }
            });

    optionalContainer
            .add(new Label("auditEnterpriseSiteID.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.auditEnterpriseSiteID.label")))
            .add(new TextField<String>("auditEnterpriseSiteID", auditEnterpriseSiteIDModel));

    optionalContainer
            .add(new Label("auditSourceID.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.auditSourceID.label")))
            .add(new TextField<String>("auditSourceID", auditSourceIDModel));

    optionalContainer
            .add(new Label("auditSourceTypeCodes.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.auditSourceTypeCodes.label")))
            .add(new TextArea<String>("auditSourceTypeCodes", auditSourceTypeCodesModel));

    optionalContainer
            .add(new Label("encoding.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.encoding.label")))
            .add(new TextField<String>("encoding", encodingModel).setRequired(true));

    optionalContainer
            .add(new Label("facility.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.facility.label")))
            .add(new DropDownChoice<Facility>("facility", facilityModel,
                    Arrays.asList(AuditLogger.Facility.values())));

    optionalContainer
            .add(new Label("formatXML.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.formatXML.label")))
            .add(new CheckBox("formatXML", formatXMLModel));

    optionalContainer
            .add(new Label("includeBOM.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.includeBOM.label")))
            .add(new CheckBox("includeBOM", includeBOMModel));

    optionalContainer
            .add(new Label("installed.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.installed.label")))
            .add(new DropDownChoice<Boolean>("installed", installedModel,
                    Arrays.asList(new Boolean[] { new Boolean(true), new Boolean(false) }),
                    new IChoiceRenderer<Boolean>() {

                        private static final long serialVersionUID = 1L;

                        public String getDisplayValue(Boolean object) {
                            return object.booleanValue() ? installedRendererChoices.get(0)
                                    : installedRendererChoices.get(1);
                        }

                        public String getIdValue(Boolean object, int index) {
                            return String.valueOf(index);
                        }
                    }).setNullValid(true));

    optionalContainer
            .add(new Label("messageID.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.messageID.label")))
            .add(new TextField<String>("messageID", messageIDModel).setRequired(true));

    optionalContainer
            .add(new Label("schemaURI.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.schemaURI.label")))
            .add(new TextField<String>("schemaURI", schemaURIModel));

    optionalContainer
            .add(new Label("timestampInUTC.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.timestampInUTC.label")))
            .add(new CheckBox("timestampInUTC", timestampInUTCModel));

    List<Severity> severities = Arrays.asList(AuditLogger.Severity.values());

    optionalContainer
            .add(new Label("majorFailureSeverity.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.majorFailureSeverity.label")))
            .add(new DropDownChoice<Severity>("majorFailureSeverity", majorFailureSeverityModel, severities));

    optionalContainer
            .add(new Label("minorFailureSeverity.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.minorFailureSeverity.label")))
            .add(new DropDownChoice<Severity>("minorFailureSeverity", minorFailureSeverityModel, severities));

    optionalContainer
            .add(new Label("seriousFailureSeverity.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.seriousFailureSeverity.label")))
            .add(new DropDownChoice<Severity>("seriousFailureSeverity", seriousFailureSeverityModel,
                    severities));

    optionalContainer
            .add(new Label("successSeverity.label",
                    new ResourceModel("dicom.edit.audit-logger.optional.successSeverity.label")))
            .add(new DropDownChoice<Severity>("successSeverity", successSeverityModel, severities));

    form.add(new AjaxFallbackButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                AuditLogger auditLogger = auditLoggerModel == null ? new AuditLogger()
                        : auditLoggerModel.getAuditLogger();

                auditLogger.setApplicationName(applicationNameModel.getObject());
                auditLogger.getConnections().clear();
                for (ConnectionModel connectionReference : connectionReferencesModel.getObject())
                    for (Connection connection : ((DeviceModel) deviceNode.getModel()).getDevice()
                            .listConnections())
                        if (connectionReference.getConnection().getHostname().equals(connection.getHostname())
                                && connectionReference.getConnection().getPort() == connection.getPort())
                            auditLogger.addConnection(connection);

                auditLogger.setAuditRecordRepositoryDevice(
                        ((WizardApplication) getApplication()).getDicomConfigurationManager()
                                .getDicomConfiguration().findDevice(arrDeviceNameModel.getObject()));

                if (optionalContainer.isVisible()) {
                    auditLogger.setAuditEnterpriseSiteID(auditEnterpriseSiteIDModel.getObject());
                    auditLogger.setAuditSourceID(auditSourceIDModel.getObject());
                    auditLogger.setAuditSourceTypeCodes(auditSourceTypeCodesModel.getArray());
                    if (encodingModel.getObject() != null)
                        auditLogger.setEncoding(encodingModel.getObject());
                    auditLogger.setFacility(facilityModel.getObject());
                    auditLogger.setFormatXML(formatXMLModel.getObject());
                    auditLogger.setIncludeBOM(includeBOMModel.getObject());
                    auditLogger.setInstalled(installedModel.getObject());
                    auditLogger.setMessageID(messageIDModel.getObject());
                    auditLogger.setSchemaURI(schemaURIModel.getObject());
                    auditLogger.setTimestampInUTC(timestampInUTCModel.getObject());
                    auditLogger.setSeriousFailureSeverity(seriousFailureSeverityModel.getObject());
                    auditLogger.setMajorFailureSeverity(majorFailureSeverityModel.getObject());
                    auditLogger.setMinorFailureSeverity(minorFailureSeverityModel.getObject());
                    auditLogger.setSuccessSeverity(successSeverityModel.getObject());
                }

                Device device = ((DeviceModel) deviceNode.getModel()).getDevice();
                if (auditLoggerModel == null)
                    device.addDeviceExtension(auditLogger);
                ConfigTreeProvider.get().mergeDevice(device);
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying HL7 application: "
                        + e.getMessage());
                if (log.isDebugEnabled())
                    e.printStackTrace();
                throw new ModalWindowRuntimeException(e.getLocalizedMessage());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.add(form);
        }
    });
    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget arg0, Form<?> arg1) {
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.dcm4chee.wizard.edit.CreateOrEditCoercionPage.java

License:LGPL

public CreateOrEditCoercionPage(final ModalWindow window, final CoercionModel coercionModel,
        final ConfigTreeNode aeNode) {
    super();/*from w  w  w.j  a  v a  2s .  co  m*/

    ApplicationEntity applicationEntity = null;
    try {
        applicationEntity = ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity();
    } catch (ConfigurationException ce) {
        log.error(this.getClass().toString() + ": " + "Error modifying retry: " + ce.getMessage());
        log.debug("Exception", ce);
        throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
    }

    add(new WebMarkupContainer("create-coercion-title").setVisible(coercionModel == null));
    add(new WebMarkupContainer("edit-coercion-title").setVisible(coercionModel != null));

    setOutputMarkupId(true);
    final ExtendedForm form = new ExtendedForm("form");
    form.setResourceIdPrefix("dicom.edit.coercion.");
    add(form);

    aeTitleModel = Model.of();
    if (coercionModel == null) {
        commonNameModel = Model.of();
        dimseModel = Model.of(org.dcm4che3.net.Dimse.C_STORE_RQ);
        transferRoleModel = Model.of(org.dcm4che3.net.TransferCapability.Role.SCP);
        labeledURIModel = Model.of();
        sopClassesModel = new StringArrayModel(null);
    } else {
        AttributeCoercion coercion = coercionModel.getCoercion();
        commonNameModel = Model.of(coercion.getCommonName());
        dimseModel = Model.of(coercion.getDIMSE());
        transferRoleModel = Model.of(coercion.getRole());
        labeledURIModel = Model.of(coercion.getURI());
        if (coercion.getAETitles() != null && coercion.getAETitles().length > 0)
            aeTitleModel = Model.of(coercion.getAETitles()[0]);
        sopClassesModel = new StringArrayModel(coercion.getSOPClasses());
    }

    form.add(new Label("commonName.label", new ResourceModel("dicom.edit.coercion.commonName.label")))
            .add(new TextField<String>("commonName", commonNameModel).setRequired(true)
                    .add(new CoercionValidator(commonNameModel.getObject(), applicationEntity)));

    form.add(new Label("dimse.label", new ResourceModel("dicom.edit.coercion.dimse.label")));
    ArrayList<Dimse> dimseList = new ArrayList<Dimse>();
    dimseList.add(Dimse.C_STORE_RQ);
    dimseList.add(Dimse.C_GET_RQ);
    dimseList.add(Dimse.C_MOVE_RQ);
    dimseList.add(Dimse.C_FIND_RQ);
    dimseList.add(Dimse.C_FIND_RSP);
    dimseList.add(Dimse.C_MOVE_RSP);
    dimseList.add(Dimse.C_GET_RSP);
    DropDownChoice<Dimse> dimseDropDown = new DropDownChoice<Dimse>("dimse", dimseModel, dimseList);
    form.add(dimseDropDown.setNullValid(false));

    form.add(new Label("transferRole.label", new ResourceModel("dicom.edit.coercion.transferRole.label")));
    ArrayList<org.dcm4che3.net.TransferCapability.Role> transferSyntaxList = new ArrayList<org.dcm4che3.net.TransferCapability.Role>();
    transferSyntaxList.add(org.dcm4che3.net.TransferCapability.Role.SCP);
    transferSyntaxList.add(org.dcm4che3.net.TransferCapability.Role.SCU);
    DropDownChoice<org.dcm4che3.net.TransferCapability.Role> roleDropDown = new DropDownChoice<org.dcm4che3.net.TransferCapability.Role>(
            "transferRole", transferRoleModel, transferSyntaxList);
    form.add(roleDropDown.setNullValid(false));

    form.add(new Label("labeledURI.label", new ResourceModel("dicom.edit.coercion.labeledURI.label")))
            .add(new TextField<String>("labeledURI", labeledURIModel).setRequired(true));

    final WebMarkupContainer optionalContainer = new WebMarkupContainer("optional");
    form.add(optionalContainer.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));

    List<String> uniqueAETitles = null;
    try {
        uniqueAETitles = Arrays.asList(ConfigTreeProvider.get().getUniqueAETitles());
    } catch (ConfigurationException ce) {
        log.error(this.getClass().toString() + ": " + "Error retrieving unique ae titles: " + ce.getMessage());
        log.debug("Exception", ce);
        throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
    }
    Collections.sort(uniqueAETitles);

    final DropDownChoice<String> aeTitleDropDownChoice = new DropDownChoice<String>("aeTitle", aeTitleModel,
            uniqueAETitles);
    optionalContainer
            .add(new Label("aeTitle.label", new ResourceModel("dicom.edit.coercion.optional.aeTitle.label")))
            .add(aeTitleDropDownChoice.setNullValid(true).setOutputMarkupId(true)
                    .setOutputMarkupPlaceholderTag(true));

    final TextField<String> aeTitleTextField = new TextField<String>("aeTitle.freetext", aeTitleModel);
    optionalContainer.add(
            aeTitleTextField.setVisible(false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));

    final Model<Boolean> toggleAETitleModel = Model.of(false);
    if (coercionModel != null && aeTitleModel.getObject() != null
            && !uniqueAETitles.contains(aeTitleModel.getObject())) {
        toggleAETitleModel.setObject(true);
        aeTitleTextField.setVisible(true);
        aeTitleDropDownChoice.setVisible(false);
    }

    optionalContainer.add(new AjaxCheckBox("toggleAETitle", toggleAETitleModel) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            aeTitleDropDownChoice.setVisible(!toggleAETitleModel.getObject());
            aeTitleTextField.setVisible(toggleAETitleModel.getObject());
            target.add(aeTitleDropDownChoice);
            target.add(aeTitleTextField);
        }
    });

    optionalContainer
            .add(new Label("sopClasses.label",
                    new ResourceModel("dicom.edit.coercion.optional.sopClasses.label")))
            .add(new TextArea<String>("sopClasses", sopClassesModel).add(new SOPClassValidator()));

    form.add(new Label("toggleOptional.label", new ResourceModel("dicom.edit.toggleOptional.label")))
            .add(new AjaxCheckBox("toggleOptional", new Model<Boolean>()) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.add(optionalContainer.setVisible(this.getModelObject()));
                }
            });

    form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                AttributeCoercion coercion = new AttributeCoercion(commonNameModel.getObject(),
                        sopClassesModel.getArray(), dimseModel.getObject(), transferRoleModel.getObject(),
                        aeTitleModel.getObject() == null ? new String[0]
                                : new String[] { aeTitleModel.getObject() },
                        labeledURIModel.getObject());

                ProxyAEExtension proxyAEExtension = ((ApplicationEntityModel) aeNode.getModel())
                        .getApplicationEntity().getAEExtension(ProxyAEExtension.class);

                if (coercionModel != null)
                    proxyAEExtension.getAttributeCoercions().remove(coercionModel.getCoercion());
                proxyAEExtension.getAttributeCoercions().add(coercion);

                ConfigTreeProvider.get().mergeDevice(
                        ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity().getDevice());
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying coercion: " + e.getMessage());
                log.debug("Exception", e);
                throw new ModalWindowRuntimeException(e.getLocalizedMessage());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.add(form);
        }
    });

    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget arg0, Form<?> arg1) {
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.dcm4chee.wizard.edit.CreateOrEditConnectionPage.java

License:LGPL

public CreateOrEditConnectionPage(final ModalWindow window, final ConnectionModel connectionModel,
        final ConfigTreeNode deviceNode) {
    super();//from w w w.  j  a v  a2  s . c om

    add(new WebMarkupContainer("create-connection-title").setVisible(connectionModel == null));
    add(new WebMarkupContainer("edit-connection-title").setVisible(connectionModel != null));

    setOutputMarkupId(true);
    final ExtendedForm form = new ExtendedForm("form");
    form.setResourceIdPrefix("dicom.edit.connection.");
    add(form);

    installedRendererChoices = new ArrayList<String>();
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.true.text").wrapOnAssignment(this).getObject());
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.false.text").wrapOnAssignment(this).getObject());

    ArrayList<String> tlsProtocols = new ArrayList<>(
            Arrays.asList("SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"));
    ArrayList<String> tlsCipherSuites = new ArrayList<>(Arrays.asList("SSL_RSA_WITH_NULL_SHA",
            "TLS_RSA_WITH_AES_128_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA"));
    try {
        tcpBacklogModel = new DefaultableModel<Integer>(Connection.DEF_BACKLOG);
        tcpConnectTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        tcpCloseDelayModel = new DefaultableModel<Integer>(Connection.DEF_SOCKETDELAY);
        tcpSendBufferSizeModel = new DefaultableModel<Integer>(Connection.DEF_BUFFERSIZE);
        tcpReceiveBufferSizeModel = new DefaultableModel<Integer>(Connection.DEF_BUFFERSIZE);
        sendPDULengthModel = new DefaultableModel<Integer>(Connection.DEF_MAX_PDU_LENGTH);
        receivePDULengthModel = new DefaultableModel<Integer>(Connection.DEF_MAX_PDU_LENGTH);
        maxOpsPerformedModel = new DefaultableModel<Integer>(Connection.SYNCHRONOUS_MODE);
        maxOpsInvokedModel = new DefaultableModel<Integer>(Connection.SYNCHRONOUS_MODE);
        aarqTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        aaacTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        arrpTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        responseTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        retrieveTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        idleTimeoutModel = new DefaultableModel<Integer>(Connection.NO_TIMEOUT);
        tlsProtocolModel = new Model<ArrayList<String>>();
        tlsProtocolModel.setObject(new ArrayList<String>());
        if (connectionModel != null) {
            List<String> assignedTlsProtocols = Arrays
                    .asList(connectionModel.getConnection().getTlsProtocols());
            for (String tlsProtocol : tlsProtocols)
                if (assignedTlsProtocols.contains(tlsProtocol))
                    tlsProtocolModel.getObject().add(tlsProtocol);
        }
        tlsCipherSuitesModel = new Model<ArrayList<String>>();
        tlsCipherSuitesModel.setObject(new ArrayList<String>());
        if (connectionModel != null) {
            List<String> assignedCipherSuites = Arrays
                    .asList(connectionModel.getConnection().getTlsCipherSuites());
            for (String tlsCipherSuite : tlsCipherSuites)
                if (assignedCipherSuites.contains(tlsCipherSuite))
                    tlsCipherSuitesModel.getObject().add(tlsCipherSuite);
        }
        if (connectionModel == null) {
            hostnameModel = Model.of();
            commonNameModel = Model.of();
            installedModel = Model.of();
            portModel = Model.of();
            httpProxyModel = Model.of();
            tlsNeedClientAuthModel = Model.of(true);
            protocolModel = Model.of(Connection.Protocol.DICOM);
            tcpNoDelayModel = Model.of(false);
            blacklistedHostnameModel = new StringArrayModel(null);
            packPDVModel = Model.of(true);
        } else {
            Connection connection = connectionModel.getConnection();
            hostnameModel = Model.of(connection.getHostname());
            commonNameModel = Model.of(connection.getCommonName());
            installedModel = Model.of(connection.getInstalled());
            portModel = Model.of(connection.getPort());
            httpProxyModel = Model.of(connection.getHttpProxy());
            tlsNeedClientAuthModel = Model.of(connection.isTlsNeedClientAuth());
            protocolModel = Model.of(connection.getProtocol());
            tcpBacklogModel.setObject(connection.getBacklog());
            tcpConnectTimeoutModel.setObject(connection.getConnectTimeout());
            tcpCloseDelayModel.setObject(connection.getSocketCloseDelay());
            tcpSendBufferSizeModel.setObject(connection.getSendBufferSize());
            tcpReceiveBufferSizeModel.setObject(connection.getReceiveBufferSize());
            tcpNoDelayModel = Model.of(connection.isTcpNoDelay());
            blacklistedHostnameModel = new StringArrayModel(connection.getBlacklist());
            sendPDULengthModel.setObject(connection.getSendPDULength());
            receivePDULengthModel.setObject(connection.getReceivePDULength());
            maxOpsPerformedModel.setObject(connection.getMaxOpsPerformed());
            maxOpsInvokedModel.setObject(connection.getMaxOpsInvoked());
            packPDVModel = Model.of(connection.isPackPDV());
            aarqTimeoutModel.setObject(connection.getRequestTimeout());
            aaacTimeoutModel.setObject(connection.getAcceptTimeout());
            arrpTimeoutModel.setObject(connection.getReleaseTimeout());
            responseTimeoutModel.setObject(connection.getResponseTimeout());
            retrieveTimeoutModel.setObject(connection.getRetrieveTimeout());
            idleTimeoutModel.setObject(connection.getIdleTimeout());
        }
    } catch (ConfigurationException ce) {
        log.error(this.getClass().toString() + ": " + "Error retrieving connection data: " + ce.getMessage());
        log.debug("Exception", ce);
        throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
    }

    FormComponent<String> hostnameTextField;
    form.add(new Label("hostname.label", new ResourceModel("dicom.edit.connection.hostname.label")))
            .add(hostnameTextField = new TextField<String>("hostname", hostnameModel)
                    .add(new HostnameValidator()).setRequired(true));

    final WebMarkupContainer optionalContainer = new WebMarkupContainer("optional");
    form.add(optionalContainer.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));

    TextField<String> commonNameTextField;
    optionalContainer
            .add(new Label("commonName.label",
                    new ResourceModel("dicom.edit.connection.optional.commonName.label")))
            .add(commonNameTextField = new TextField<String>("commonName", commonNameModel));

    WebMarkupContainer portWMC = new WebMarkupContainer("port") {
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return !((protocolModel.getObject().equals(Connection.Protocol.SYSLOG_TLS)
                    || protocolModel.getObject().equals(Connection.Protocol.SYSLOG_UDP))
                    && (deviceNode.getConfigurationType().equals(ConfigurationType.Proxy)
                            || deviceNode.getConfigurationType().equals(ConfigurationType.XDS)));
        }
    };
    portWMC.setOutputMarkupId(true);
    portWMC.setOutputMarkupPlaceholderTag(true);
    FormComponent<Integer> portTextField;
    portWMC.add(new Label("port.label", new ResourceModel("dicom.edit.connection.optional.port.label")))
            .add(portTextField = new TextField<Integer>("port", portModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(1, 65535)));
    optionalContainer.add(portWMC);

    // if (portModel.getObject().equals(-1))
    // portTextField.setModelObject(null);

    optionalContainer
            .add(new Label("installed.label",
                    new ResourceModel("dicom.edit.connection.optional.installed.label")))
            .add(new DropDownChoice<Boolean>("installed", installedModel,
                    Arrays.asList(new Boolean[] { new Boolean(true), new Boolean(false) }),
                    new IChoiceRenderer<Boolean>() {

                        private static final long serialVersionUID = 1L;

                        public String getDisplayValue(Boolean object) {
                            return object.booleanValue() ? installedRendererChoices.get(0)
                                    : installedRendererChoices.get(1);
                        }

                        public String getIdValue(Boolean object, int index) {
                            return String.valueOf(index);
                        }
                    }).setNullValid(true));

    optionalContainer
            .add(new Label("tlsCipherSuites.label",
                    new ResourceModel("dicom.edit.connection.optional.tlsCipherSuites.label")))
            .add(new CheckBoxMultipleChoice<String>("tlsCipherSuites", tlsCipherSuitesModel,
                    new Model<ArrayList<String>>(tlsCipherSuites)));

    optionalContainer
            .add(new Label("httpProxy.label",
                    new ResourceModel("dicom.edit.connection.optional.httpProxy.label")))
            .add(new TextField<String>("httpProxy", httpProxyModel).add(new HostnameValidator()));

    optionalContainer
            .add(new Label("tlsNeedClientAuth.label",
                    new ResourceModel("dicom.edit.connection.optional.tlsNeedClientAuth.label")))
            .add(new CheckBox("tlsNeedClientAuth", tlsNeedClientAuthModel));

    DropDownChoice<Connection.Protocol> protocolDropDown;
    optionalContainer.add(new Label("protocol.label",
            new ResourceModel("dicom.edit.connection.optional.protocol.label"))).add(
                    (protocolDropDown = new DropDownChoice<Connection.Protocol>("protocol", protocolModel,
                            Arrays.asList(new Connection.Protocol[] { Connection.Protocol.DICOM,
                                    Connection.Protocol.HL7, Connection.Protocol.SYSLOG_TLS,
                                    Connection.Protocol.SYSLOG_UDP }),
                            new IChoiceRenderer<Connection.Protocol>() {

                                private static final long serialVersionUID = 1L;

                                public String getDisplayValue(Connection.Protocol object) {
                                    return object.name();
                                }

                                public String getIdValue(Connection.Protocol object, int index) {
                                    return String.valueOf(index);
                                }
                            })).setNullValid(false).add(new AjaxFormComponentUpdatingBehavior("onchange") {

                                private static final long serialVersionUID = 1L;

                                @Override
                                protected void onUpdate(AjaxRequestTarget target) {
                                    target.add(optionalContainer.get("port"));
                                }
                            }));
    ;
    AjaxFormSubmitBehavior onProtocolChange = new AjaxFormSubmitBehavior(form, "change") {

        private static final long serialVersionUID = 1L;

        protected void onEvent(final AjaxRequestTarget target) {
            super.onEvent(target);
        }
    };
    protocolDropDown.add(onProtocolChange);

    optionalContainer
            .add(new Label("tlsProtocol.label",
                    new ResourceModel("dicom.edit.connection.optional.tlsProtocol.label")))
            .add(new CheckBoxMultipleChoice<String>("tlsProtocol", tlsProtocolModel,
                    new Model<ArrayList<String>>(tlsProtocols)));

    optionalContainer
            .add(new Label("tcpBacklog.label",
                    new ResourceModel("dicom.edit.connection.optional.tcpBacklog.label")))
            .add(new TextField<Integer>("tcpBacklog", tcpBacklogModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("tcpConnectTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.tcpConnectTimeout.label")))
            .add(new TextField<Integer>("tcpConnectTimeout", tcpConnectTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("tcpCloseDelay.label",
                    new ResourceModel("dicom.edit.connection.optional.tcpCloseDelay.label")))
            .add(new TextField<Integer>("tcpCloseDelay", tcpCloseDelayModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("tcpSendBufferSize.label",
                    new ResourceModel("dicom.edit.connection.optional.tcpSendBufferSize.label")))
            .add(new TextField<Integer>("tcpSendBufferSize", tcpSendBufferSizeModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("tcpReceiveBufferSize.label",
                    new ResourceModel("dicom.edit.connection.optional.tcpReceiveBufferSize.label")))
            .add(new TextField<Integer>("tcpReceiveBufferSize", tcpReceiveBufferSizeModel)
                    .setType(Integer.class).add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("tcpNoDelay.label",
                    new ResourceModel("dicom.edit.connection.optional.tcpNoDelay.label")))
            .add(new CheckBox("tcpNoDelay", tcpNoDelayModel));

    optionalContainer
            .add(new Label("blacklistedHostname.label",
                    new ResourceModel("dicom.edit.connection.optional.blacklistedHostname.label")))
            .add(new TextArea<String>("blacklistedHostname", blacklistedHostnameModel));

    optionalContainer
            .add(new Label("sendPDULength.label",
                    new ResourceModel("dicom.edit.connection.optional.sendPDULength.label")))
            .add(new TextField<Integer>("sendPDULength", sendPDULengthModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("receivePDULength.label",
                    new ResourceModel("dicom.edit.connection.optional.receivePDULength.label")))
            .add(new TextField<Integer>("receivePDULength", receivePDULengthModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("maxOpsPerformed.label",
                    new ResourceModel("dicom.edit.connection.optional.maxOpsPerformed.label")))
            .add(new TextField<Integer>("maxOpsPerformed", maxOpsPerformedModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("maxOpsInvoked.label",
                    new ResourceModel("dicom.edit.connection.optional.maxOpsInvoked.label")))
            .add(new TextField<Integer>("maxOpsInvoked", maxOpsInvokedModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("packPDV.label", new ResourceModel("dicom.edit.connection.optional.packPDV.label")))
            .add(new CheckBox("packPDV", packPDVModel));

    optionalContainer
            .add(new Label("aarqTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.aarqTimeout.label")))
            .add(new TextField<Integer>("aarqTimeout", aarqTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("aaacTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.aaacTimeout.label")))
            .add(new TextField<Integer>("aaacTimeout", aaacTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("arrpTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.arrpTimeout.label")))
            .add(new TextField<Integer>("arrpTimeout", arrpTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("responseTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.responseTimeout.label")))
            .add(new TextField<Integer>("responseTimeout", responseTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("retrieveTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.retrieveTimeout.label")))
            .add(new TextField<Integer>("retrieveTimeout", retrieveTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    optionalContainer
            .add(new Label("idleTimeout.label",
                    new ResourceModel("dicom.edit.connection.optional.idleTimeout.label")))
            .add(new TextField<Integer>("idleTimeout", idleTimeoutModel).setType(Integer.class)
                    .add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)));

    form.add(new Label("toggleOptional.label", new ResourceModel("dicom.edit.toggleOptional.label")))
            .add(new AjaxCheckBox("toggleOptional", new Model<Boolean>()) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.add(optionalContainer.setVisible(this.getModelObject()));
                }
            });

    form.add(new ConnectionValidator(((DeviceModel) deviceNode.getModel()).getConnections(),
            commonNameTextField, hostnameTextField, portTextField, connectionModel));

    if (connectionModel != null)
        try {
            Connection connection = connectionModel.getConnection();
            for (ApplicationEntity ae : connection.getDevice().getApplicationEntities())
                if (ae.getConnections().contains(connection))
                    protocolDropDown.setEnabled(false).add(new AttributeModifier("title",
                            new ResourceModel("dicom.delete.connection.notAllowed")));

            HL7DeviceExtension hl7DeviceExtension = connection.getDevice()
                    .getDeviceExtension(HL7DeviceExtension.class);
            if (hl7DeviceExtension != null) {
                for (HL7Application hl7Application : hl7DeviceExtension.getHL7Applications())
                    if (hl7Application.getConnections().contains(connection))
                        protocolDropDown.setEnabled(false).add(new AttributeModifier("title",
                                new ResourceModel("dicom.delete.connection.notAllowed")));
            }
        } catch (ConfigurationException ce) {
            log.error(this.getClass().toString() + ": " + "Error checking connections in use: "
                    + ce.getMessage());
            log.debug("Exception", ce);
            throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
        }

    form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            Connection connection = null;
            try {
                connection = (connectionModel == null)
                        ? new Connection(commonNameModel.getObject(), hostnameModel.getObject())
                        : connectionModel.getConnection();
                connection.setHostname(hostnameModel.getObject());
                connection.setCommonName(commonNameModel.getObject());
                connection.setInstalled(installedModel.getObject());
                connection.setPort(portModel.getObject() == null ? -1 : portModel.getObject().intValue());
                connection.setTlsCipherSuites(tlsCipherSuitesModel.getObject().toArray(new String[0]));
                connection.setHttpProxy(httpProxyModel.getObject());
                connection.setTlsNeedClientAuth(tlsNeedClientAuthModel.getObject());
                connection.setProtocol(protocolModel.getObject());
                connection.setTlsProtocols(tlsProtocolModel.getObject().toArray(new String[0]));
                connection.setBacklog(tcpBacklogModel.getObject());
                connection.setConnectTimeout(tcpConnectTimeoutModel.getObject());
                connection.setSocketCloseDelay(tcpCloseDelayModel.getObject());
                connection.setSendBufferSize(tcpSendBufferSizeModel.getObject());
                connection.setReceiveBufferSize(tcpReceiveBufferSizeModel.getObject());
                connection.setTcpNoDelay(tcpNoDelayModel.getObject());
                connection.setBlacklist(blacklistedHostnameModel.getArray());
                connection.setSendPDULength(sendPDULengthModel.getObject());
                connection.setReceivePDULength(receivePDULengthModel.getObject());
                connection.setMaxOpsPerformed(maxOpsPerformedModel.getObject());
                connection.setMaxOpsInvoked(maxOpsInvokedModel.getObject());
                connection.setPackPDV(packPDVModel.getObject());
                connection.setRequestTimeout(aarqTimeoutModel.getObject());
                connection.setAcceptTimeout(aaacTimeoutModel.getObject());
                connection.setReleaseTimeout(arrpTimeoutModel.getObject());
                connection.setResponseTimeout(responseTimeoutModel.getObject());
                connection.setRetrieveTimeout(retrieveTimeoutModel.getObject());
                connection.setIdleTimeout(idleTimeoutModel.getObject());
                if (connectionModel == null)
                    ((DeviceModel) deviceNode.getModel()).getDevice().addConnection(connection);
                ConfigTreeProvider.get().mergeDevice(connection.getDevice());
                window.close(target);
            } catch (Exception e) {
                log.error("{}: Error saving connection: {}", this, e);
                if (log.isDebugEnabled())
                    e.printStackTrace();
                throw new ModalWindowRuntimeException(e.getLocalizedMessage());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.add(form);
        }
    });
    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget arg0, Form<?> arg1) {
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.dcm4chee.wizard.edit.CreateOrEditHL7ApplicationPage.java

License:LGPL

public CreateOrEditHL7ApplicationPage(final ModalWindow window, final HL7ApplicationModel hl7ApplicationModel,
        final ConfigTreeNode deviceNode) {
    super();//from  ww w. j  a  v a 2 s .  com

    add(new WebMarkupContainer("create-hl7-application-title").setVisible(hl7ApplicationModel == null));
    add(new WebMarkupContainer("edit-hl7-application-title").setVisible(hl7ApplicationModel != null));

    setOutputMarkupId(true);
    final ExtendedForm form = new ExtendedForm("form");
    form.setResourceIdPrefix("dicom.edit.hl7-application.");
    add(form);

    installedRendererChoices = new ArrayList<String>();
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.true.text").wrapOnAssignment(this).getObject());
    installedRendererChoices
            .add(new ResourceModel("dicom.installed.false.text").wrapOnAssignment(this).getObject());

    ArrayList<ConnectionModel> connectionReferences = new ArrayList<ConnectionModel>();

    try {
        connectionReferencesModel = new Model<ArrayList<ConnectionModel>>();
        connectionReferencesModel.setObject(new ArrayList<ConnectionModel>());
        for (Connection connection : ((DeviceModel) deviceNode.getModel()).getDevice().listConnections()) {
            ConnectionModel connectionReference = new ConnectionModel(connection, 0);
            connectionReferences.add(connectionReference);
            if (hl7ApplicationModel != null
                    && hl7ApplicationModel.getHL7Application().getConnections().contains(connection))
                connectionReferencesModel.getObject().add(connectionReference);
        }

        if (hl7ApplicationModel == null) {
            applicationNameModel = Model.of();
            acceptedMessageTypesModel = new StringArrayModel(null);
            acceptedSendingApplicationsModel = new StringArrayModel(null);
            defaultCharacterSetModel = Model.of();
            installedModel = Model.of();
        } else {
            HL7Application hl7Application = hl7ApplicationModel.getHL7Application();

            applicationNameModel = Model.of(hl7Application.getApplicationName());
            acceptedMessageTypesModel = new StringArrayModel(hl7Application.getAcceptedMessageTypes());
            acceptedSendingApplicationsModel = new StringArrayModel(
                    hl7Application.getAcceptedSendingApplications());
            defaultCharacterSetModel = Model.of(hl7Application.getHL7DefaultCharacterSet());
            installedModel = Model.of(hl7Application.getInstalled());
        }
    } catch (ConfigurationException ce) {
        log.error(this.getClass().toString() + ": " + "Error retrieving hl7 application data: "
                + ce.getMessage());
        log.debug("Exception", ce);
        throw new ModalWindowRuntimeException(ce.getLocalizedMessage());
    }

    form.add(new Label("applicationName.label",
            new ResourceModel("dicom.edit.hl7-application.applicationName.label")))
            .add(new TextField<String>("applicationName", applicationNameModel)
                    .add(new HL7NameValidator(applicationNameModel.getObject())).setRequired(true)
                    .add(FocusOnLoadBehavior.newFocusAndSelectBehaviour()));

    form.add(new CheckBoxMultipleChoice<ConnectionModel>("connections", connectionReferencesModel,
            new Model<ArrayList<ConnectionModel>>(connectionReferences),
            new IChoiceRenderer<ConnectionModel>() {

                private static final long serialVersionUID = 1L;

                public Object getDisplayValue(ConnectionModel connectionReference) {
                    Connection connection = null;
                    try {
                        connection = connectionReference.getConnection();
                    } catch (Exception e) {
                        log.error(this.getClass().toString() + ": " + "Error obtaining connection: "
                                + e.getMessage());
                        log.debug("Exception", e);
                        throw new ModalWindowRuntimeException(e.getLocalizedMessage());
                    }
                    String location = connection.getHostname()
                            + (connection.getPort() == -1 ? "" : ":" + connection.getPort());
                    return connection.getCommonName() != null
                            ? connection.getCommonName() + " (" + location + ")"
                            : location;
                }

                public String getIdValue(ConnectionModel model, int index) {
                    return String.valueOf(index);
                }
            }).add(new ConnectionReferenceValidator())
                    .add(new ConnectionProtocolValidator(Connection.Protocol.HL7)));

    final WebMarkupContainer optionalContainer = new WebMarkupContainer("optional");
    form.add(optionalContainer.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true).setVisible(false));

    form.add(new Label("toggleOptional.label", new ResourceModel("dicom.edit.toggleOptional.label")))
            .add(new AjaxCheckBox("toggleOptional", new Model<Boolean>()) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.add(optionalContainer.setVisible(this.getModelObject()));
                }
            });

    optionalContainer
            .add(new Label("acceptedMessageTypes.label",
                    new ResourceModel("dicom.edit.hl7-application.optional.acceptedMessageTypes.label")))
            .add(new TextArea<String>("acceptedMessageTypes", acceptedMessageTypesModel));

    optionalContainer
            .add(new Label("acceptedSendingApplications.label",
                    new ResourceModel("dicom.edit.hl7-application.optional.acceptedSendingApplications.label")))
            .add(new TextArea<String>("acceptedSendingApplications", acceptedSendingApplicationsModel));

    optionalContainer
            .add(new Label("defaultCharacterSet.label",
                    new ResourceModel("dicom.edit.hl7-application.optional.defaultCharacterSet.label")))
            .add(new TextField<String>("defaultCharacterSet", defaultCharacterSetModel));

    optionalContainer
            .add(new Label("installed.label",
                    new ResourceModel("dicom.edit.hl7-application.optional.installed.label")))
            .add(new DropDownChoice<Boolean>("installed", installedModel,
                    Arrays.asList(new Boolean[] { new Boolean(true), new Boolean(false) }),
                    new IChoiceRenderer<Boolean>() {

                        private static final long serialVersionUID = 1L;

                        public String getDisplayValue(Boolean object) {
                            return object.booleanValue() ? installedRendererChoices.get(0)
                                    : installedRendererChoices.get(1);
                        }

                        public String getIdValue(Boolean object, int index) {
                            return String.valueOf(index);
                        }
                    }).setNullValid(true));

    form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                String oldName = hl7ApplicationModel == null ? null
                        : hl7ApplicationModel.getHL7Application().getApplicationName();

                HL7Application hl7Application = hl7ApplicationModel == null
                        ? new HL7Application(applicationNameModel.getObject())
                        : (HL7Application) hl7ApplicationModel.getHL7Application();

                hl7Application.setApplicationName(applicationNameModel.getObject());
                hl7Application.getConnections().clear();
                for (ConnectionModel connectionReference : connectionReferencesModel.getObject())
                    for (Connection connection : ((DeviceModel) deviceNode.getModel()).getDevice()
                            .listConnections())
                        if (connectionReference.getConnection().getHostname().equals(connection.getHostname())
                                && connectionReference.getConnection().getPort() == connection.getPort())
                            hl7Application.addConnection(connection);

                hl7Application.setAcceptedMessageTypes(acceptedMessageTypesModel.getArray());
                hl7Application.setAcceptedSendingApplications(acceptedSendingApplicationsModel.getArray());
                hl7Application.setHL7DefaultCharacterSet(defaultCharacterSetModel.getObject());
                hl7Application.setInstalled(installedModel.getObject());

                if (hl7ApplicationModel == null) {
                    HL7DeviceExtension hl7DeviceExtension = ((DeviceModel) deviceNode.getModel()).getDevice()
                            .getDeviceExtension(HL7DeviceExtension.class);
                    if (hl7DeviceExtension == null) {
                        hl7DeviceExtension = new HL7DeviceExtension();
                        ((DeviceModel) deviceNode.getModel()).getDevice()
                                .addDeviceExtension(hl7DeviceExtension);
                    }
                    hl7DeviceExtension.addHL7Application(hl7Application);
                } else
                    ConfigTreeProvider.get().unregisterHL7Application(oldName);
                ConfigTreeProvider.get().mergeDevice(hl7Application.getDevice());
                ConfigTreeProvider.get().registerHL7Application(applicationNameModel.getObject());
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying HL7 application: "
                        + e.getMessage());
                log.debug("Exception", e);
                throw new ModalWindowRuntimeException(e.getLocalizedMessage());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            if (target != null)
                target.add(form);
        }
    });
    form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget arg0, Form<?> arg1) {
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.dcm4chee.wizard.edit.CreateOrEditTransferCapabilityPage.java

License:LGPL

public CreateOrEditTransferCapabilityPage(final ModalWindow window,
        final TransferCapabilityModel transferCapabilityModel, final ConfigTreeNode aeNode) {
    super();/*from   www . j a  v  a 2  s.  c  o m*/

    try {
        final ApplicationEntity applicationEntity = ((ApplicationEntityModel) aeNode.getModel())
                .getApplicationEntity();

        add(new WebMarkupContainer("create-transferCapability-title")
                .setVisible(transferCapabilityModel == null));
        add(new WebMarkupContainer("edit-transferCapability-title")
                .setVisible(transferCapabilityModel != null));

        setOutputMarkupId(true);
        final ExtendedForm form = new ExtendedForm("form");
        form.setResourceIdPrefix("dicom.edit.transferCapability.");
        add(form);

        if (transferCapabilityModel == null) {
            sopClassModel = Model.of();
            roleModel = Model.of(org.dcm4che3.net.TransferCapability.Role.SCP);
            transferSyntaxModel = new StringArrayModel(null);
            commonNameModel = Model.of();
        } else {
            TransferCapability transferCapability = transferCapabilityModel.getTransferCapability();
            sopClassModel = Model.of(transferCapability.getSopClass());
            roleModel = Model.of(transferCapability.getRole());
            transferSyntaxModel = new StringArrayModel(transferCapability.getTransferSyntaxes());
            commonNameModel = Model.of(transferCapability.getCommonName());
        }

        form.add(
                new Label("sopClass.label", new ResourceModel("dicom.edit.transferCapability.sopClass.label")));
        TextField<String> sopClassTextField = new TextField<String>("sopClass", sopClassModel);
        sopClassTextField.setRequired(true);
        sopClassTextField.add(new SOPClassValidator());
        form.add(sopClassTextField);

        form.add(new Label("role.label", new ResourceModel("dicom.edit.transferCapability.role.label")));
        ArrayList<org.dcm4che3.net.TransferCapability.Role> transferSyntaxList = new ArrayList<org.dcm4che3.net.TransferCapability.Role>();
        transferSyntaxList.add(org.dcm4che3.net.TransferCapability.Role.SCP);
        transferSyntaxList.add(org.dcm4che3.net.TransferCapability.Role.SCU);
        DropDownChoice<org.dcm4che3.net.TransferCapability.Role> roleDropDown = new DropDownChoice<org.dcm4che3.net.TransferCapability.Role>(
                "role", roleModel, transferSyntaxList);
        form.add(roleDropDown.setNullValid(false));

        form.add(new Label("transferSyntax.label",
                new ResourceModel("dicom.edit.transferCapability.transferSyntax.label")))
                .add(new TextArea<String>("transferSyntax", transferSyntaxModel)
                        .add(new TransferSyntaxValidator()).setRequired(true));

        TextField<String> commonNameTextField = new TextField<String>("commonName", commonNameModel);

        form.add(new TransferCapabilityValidator(applicationEntity, sopClassTextField, roleDropDown,
                commonNameTextField));

        final WebMarkupContainer optionalContainer = new WebMarkupContainer("optional");
        form.add(optionalContainer.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true)
                .setVisible(false));

        optionalContainer
                .add(new Label("commonName.label",
                        new ResourceModel("dicom.edit.transferCapability.optional.commonName.label")))
                .add(commonNameTextField);

        form.add(new Label("toggleOptional.label", new ResourceModel("dicom.edit.toggleOptional.label")))
                .add(new AjaxCheckBox("toggleOptional", new Model<Boolean>()) {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {
                        target.add(optionalContainer.setVisible(this.getModelObject()));
                    }
                });

        form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                try {
                    TransferCapability transferCapability = transferCapabilityModel == null
                            ? new TransferCapability(commonNameModel.getObject(), sopClassModel.getObject(),
                                    roleModel.getObject(), transferSyntaxModel.getArray())
                            : transferCapabilityModel.getTransferCapability();

                    if (transferCapabilityModel != null) {
                        applicationEntity.removeTransferCapabilityFor(transferCapability.getSopClass(),
                                transferCapability.getRole());
                        transferCapability.setSopClass(sopClassModel.getObject());
                        transferCapability.setRole(roleModel.getObject());
                        transferCapability.setTransferSyntaxes(transferSyntaxModel.getArray());
                        transferCapability.setCommonName(commonNameModel.getObject());
                    }
                    applicationEntity.addTransferCapability(transferCapability);

                    ConfigTreeProvider.get().mergeDevice(applicationEntity.getDevice());
                    window.close(target);
                } catch (Exception e) {
                    log.error(this.getClass().toString() + ": " + "Error modifying transfer capability: "
                            + e.getMessage());
                    log.debug("Exception", e);
                    throw new ModalWindowRuntimeException(e.getLocalizedMessage());
                }
            }

            @Override
            protected void onError(AjaxRequestTarget target, Form<?> form) {
                if (target != null)
                    target.add(form);
            }
        });
        form.add(new AjaxFallbackButton("cancel", new ResourceModel("cancelBtn"), form) {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                window.close(target);
            }

            @Override
            protected void onError(AjaxRequestTarget arg0, Form<?> arg1) {
            }
        }.setDefaultFormProcessing(false));
    } catch (ConfigurationException e) {
        log.error("Error creating TransferCapabilityValidator for sopClass TextField", e);
    }
}