Example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow close

List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow close

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow close.

Prototype

public void close(final IPartialPageRequestHandler target) 

Source Link

Document

Closes the modal window.

Usage

From source file:org.apache.syncope.console.pages.VirSchemaModalPage.java

License:Apache License

@Override
public void setSchemaModalPage(final PageReference pageRef, final ModalWindow window, VirSchemaTO schema,
        final boolean createFlag) {

    if (schema == null) {
        schema = new VirSchemaTO();
    }//from   ww  w  . j  a va2 s .com

    final Form<VirSchemaTO> schemaForm = new Form<VirSchemaTO>(FORM);

    schemaForm.setModel(new CompoundPropertyModel<VirSchemaTO>(schema));

    final AjaxTextFieldPanel name = new AjaxTextFieldPanel("name", getString("name"),
            new PropertyModel<String>(schema, "name"));
    name.addRequiredLabel();

    name.setEnabled(createFlag);

    final AjaxCheckBoxPanel readonly = new AjaxCheckBoxPanel("readonly", getString("readonly"),
            new PropertyModel<Boolean>(schema, "readonly"));

    final AjaxButton submit = new IndicatingAjaxButton(APPLY, new ResourceModel(SUBMIT)) {

        private static final long serialVersionUID = -958724007591692537L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            VirSchemaTO schemaTO = (VirSchemaTO) form.getDefaultModelObject();
            try {
                if (createFlag) {
                    schemaRestClient.createVirSchema(kind, schemaTO);
                } else {
                    schemaRestClient.updateVirSchema(kind, schemaTO);
                }
                if (pageRef.getPage() instanceof BasePage) {
                    ((BasePage) pageRef.getPage()).setModalResult(true);
                }

                window.close(target);
            } catch (SyncopeClientException e) {
                error(getString(Constants.ERROR) + ": " + e.getMessage());
                feedbackPanel.refresh(target);
            }
        }

        @Override
        protected void onError(final AjaxRequestTarget target, final Form<?> form) {
            feedbackPanel.refresh(target);
        }
    };

    final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {

        private static final long serialVersionUID = -958724007591692537L;

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

    cancel.setDefaultFormProcessing(false);

    String allowedRoles = createFlag ? xmlRolesReader.getAllAllowedRoles("Schema", "create")
            : xmlRolesReader.getAllAllowedRoles("Schema", "update");

    MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, allowedRoles);

    schemaForm.add(name);
    schemaForm.add(readonly);

    schemaForm.add(submit);
    schemaForm.add(cancel);

    add(schemaForm);
}

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   w w  w.  jav  a2  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);/*from ww  w.j  a va  2  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 w  w w .j a v a  2s  . 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.web.war.folder.MppsForwardPanel.java

License:LGPL

public MppsForwardPanel(String id, final ModalWindow modalWindow, final PPSModel ppsModel) {
    super(id);/*from   www . j  a  v  a 2  s  . co  m*/
    if (MppsForwardPanel.CSS != null)
        add(CSSPackageResource.getHeaderContribution(MppsForwardPanel.CSS));

    initDestinationAETs();

    add(new Label("title", new ResourceModel("forward.title")));

    final BaseForm form = new BaseForm("form");
    form.setResourceIdPrefix("forward.");
    add(form);

    add(new Label("id.label", new ResourceModel("forward.pps.id.label")));
    add(new Label("id", ppsModel.getId()));
    add(new Label("description.label", new ResourceModel("forward.pps.description.label")));
    add(new Label("description", ppsModel.getDescription()));
    add(new Label("accessionNumber.label", new ResourceModel("forward.pps.accessionNumber.label")));
    add(new Label("accessionNumber", ppsModel.getAccessionNumber()));
    add(new Label("spsId.label", new ResourceModel("forward.pps.spsId.label")));
    add(new Label("spsId", ppsModel.getSpsid()));

    add(new Label("modality.label", new ResourceModel("forward.pps.modality.label")));
    add(new Label("modality", ppsModel.getModality()));
    add(new Label("stationAET.label", new ResourceModel("forward.pps.stationAET.label")));
    add(new Label("stationAET", ppsModel.getStationAET()));
    add(new Label("stationName.label", new ResourceModel("forward.pps.stationName.label")));
    add(new Label("stationName", ppsModel.getStationName()));

    add(new Label("status.label", new ResourceModel("forward.pps.status.label")));
    add(new Label("status", ppsModel.getStatus()));

    form.add(new DropDownChoice<AE>("destinationAETs", destinationModel, destinationAETs,
            new IChoiceRenderer<AE>() {
                private static final long serialVersionUID = 1L;

                public Object getDisplayValue(AE ae) {
                    if (ae.getDescription() == null) {
                        return ae.getTitle();
                    } else {
                        return ae.getTitle() + "(" + ae.getDescription() + ")";
                    }
                }

                public String getIdValue(AE ae, int idx) {
                    return String.valueOf(idx);
                }
            }).setNullValid(false).setOutputMarkupId(true));

    form.addLabel("destinationAETsLabel");
    form.addLabel("forwardResultLabel");

    form.add(resultLabel.setOutputMarkupId(true));

    AjaxButton forwardBtn = new IndicatingAjaxButton("forward") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            done = true;
            success = false;

            result = getString("forward.forwardResult.default");
            try {
                result = MppsForwardDelegate.getInstance().forwardMPPS(ppsModel, destinationAET.getTitle());
                success = result.endsWith("COMPLETED SUCCESSFULLY");
            } catch (Exception e) {
                log.error("Error forwarding mpps", e);
                result = "Error: " + e.getCause().getMessage();
                success = false;
            }
            target.addComponent(resultLabel);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            target.addComponent(resultLabel);
            BaseForm.addInvalidComponentsToAjaxRequestTarget(target, form);
        }
    };
    forwardBtn.setModel(new ResourceModel("forward.forwardBtn.text"));
    form.add(forwardBtn);

    form.add(new AjaxButton("close", new ResourceModel("closeBtn")) {

        private static final long serialVersionUID = 1L;

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

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            modalWindow.close(target);
        }
    }).setOutputMarkupId(true).add(FocusOnLoadBehaviour.newSimpleFocusBehaviour());

    setOutputMarkupId(true);
}

From source file:org.dcm4chee.web.war.folder.webviewer.WebviewerSelectionPage.java

License:LGPL

public WebviewerSelectionPage(AbstractDicomModel model, WebviewerLinkProvider[] providers,
        final ModalWindow modalWindow, final WebviewerLinkClickedCallback callback) {
    super();/*from www.  ja v a 2 s .  c o  m*/
    add(new Label("header", new ResourceModel("webviewer.selection.header")));
    add(new Label("info", model.toString()));
    RepeatingView rv = new RepeatingView("repeater");
    add(rv);
    WebMarkupContainer mc;
    for (int i = 0; i < providers.length; i++) {
        final WebviewerLinkProvider provider = providers[i];
        final String url = Webviewer.getUrlForModel(model, provider);
        if (url != null) {
            mc = new WebMarkupContainer(rv.newChildId());
            ExternalLink link = new ExternalLink("link", url, provider.getName());
            if (!provider.hasOwnWindow()) {
                link.setPopupSettings(new PopupSettings(PageMap.forName(provider.getName()),
                        PopupSettings.RESIZABLE | PopupSettings.SCROLLBARS));
            }
            if (modalWindow != null || callback != null) {
                link.add(new AjaxEventBehavior("onclick") {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onEvent(AjaxRequestTarget target) {
                        if (modalWindow != null) {
                            modalWindow.close(target);
                        }
                        if (callback != null) {
                            callback.linkClicked(target);
                        }
                    }

                    @Override
                    protected CharSequence generateCallbackScript(CharSequence partialCall) {
                        CharSequence script = super.generateCallbackScript(partialCall);
                        if (provider.hasOwnWindow()) {
                            script = Webviewer.getSendHttpRequestJavascript(url) + script + "return false;";
                        }
                        return script;
                    }

                });
            }

            mc.add(link);
            rv.add(mc);
        }
    }
}

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

License:LGPL

public CreateOrEditApplicationEntityPage(final ModalWindow window, final ApplicationEntityModel aeModel,
        final ConfigTreeNode deviceNode) {
    super();/*from ww  w.  j a  va2s  .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();/*w  w w. jav  a 2  s.c  om*/

    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 ww  .  ja v  a2  s.c o  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 . jav  a 2s .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));
}