Example usage for org.apache.wicket.extensions.ajax.markup.html IndicatingAjaxButton IndicatingAjaxButton

List of usage examples for org.apache.wicket.extensions.ajax.markup.html IndicatingAjaxButton IndicatingAjaxButton

Introduction

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

Prototype

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

Source Link

Document

Constructor

Usage

From source file:org.apache.syncope.client.console.pages.CamelRouteModalPage.java

License:Apache License

public CamelRouteModalPage(final PageReference pageRef, final ModalWindow window, final CamelRouteTO routeTO,
        final boolean createFlag) {

    Form<CamelRouteTO> routeForm = new Form<>("routeDefForm");

    final TextArea<String> routeDefArea = new TextArea<>("content",
            new PropertyModel<String>(routeTO, "content"));

    routeForm.add(routeDefArea);/*from  w w w  . ja  va2  s.c om*/
    routeForm.setModel(new CompoundPropertyModel<>(routeTO));

    AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<>(getString(SUBMIT)), routeForm) {

        private static final long serialVersionUID = -958724007591692537L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            try {
                restClient.update(routeTO.getKey(), ((CamelRouteTO) form.getModelObject()).getContent());
                info(getString(Constants.OPERATION_SUCCEEDED));

                // Uncomment with something similar once SYNCOPE-156 is completed
                // Configuration callerPage = (Configuration) pageRef.getPage();
                // callerPage.setModalResult(true);
                window.close(target);
            } catch (SyncopeClientException scee) {
                error(getString(Constants.ERROR) + ": " + scee.getMessage());
            }
            target.add(feedbackPanel);
        }

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

    };

    MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, Entitlement.ROUTE_UPDATE);
    routeForm.add(submit);

    this.add(routeForm);
}

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

License:LGPL

public CreateOrEditApplicationEntityPage(final ModalWindow window, final ApplicationEntityModel aeModel,
        final ConfigTreeNode deviceNode) {
    super();//  w w w  . j av a 2s.  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.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();//www. ja v a2 s.  com

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

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

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

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

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

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

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

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

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

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

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

                        private static final long serialVersionUID = 1L;

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

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

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

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

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

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

                                private static final long serialVersionUID = 1L;

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

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

                                private static final long serialVersionUID = 1L;

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

        private static final long serialVersionUID = 1L;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        private static final long serialVersionUID = 1L;

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

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

        private static final long serialVersionUID = 1L;

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

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

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

License:LGPL

private void addSaveButton(final ModalWindow window, final DeviceModel deviceModel, final ExtendedForm form) {
    form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override//ww  w.  ja v a  2s.  c  o m
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                Device device = deviceModel != null ? deviceModel.getDevice() : initDeviceExtensions();
                setDeviceAttributes(device);
                setProxyDeviceAttributes(device);
                setXdsDeviceAttributes(device);
                if (deviceModel == null)
                    ConfigTreeProvider.get().persistDevice(device);
                else
                    ConfigTreeProvider.get().mergeDevice(device);
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying device: " + 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);
        }
    });
}

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

License:LGPL

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

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

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

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

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

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

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

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

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

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

                private static final long serialVersionUID = 1L;

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

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

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

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

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

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

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

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

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

                        private static final long serialVersionUID = 1L;

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

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

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

        private static final long serialVersionUID = 1L;

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

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

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

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

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

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

        private static final long serialVersionUID = 1L;

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

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

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

License:LGPL

public CreateOrEditTransferCapabilityPage(final ModalWindow window,
        final TransferCapabilityModel transferCapabilityModel, final ConfigTreeNode aeNode) {
    super();//from  w  w w .jav  a2  s.  c  o  m

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            private static final long serialVersionUID = 1L;

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

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

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

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

            private static final long serialVersionUID = 1L;

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

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

From source file:org.dcm4chee.wizard.edit.proxy.CreateOrEditForwardOptionPage.java

License:LGPL

public CreateOrEditForwardOptionPage(final ModalWindow window, final ForwardOptionModel forwardOptionModel,
        final ConfigTreeNode aeNode) {
    super();/*from w  w w.j a v a2  s  .  c  o m*/

    ProxyAEExtension proxyAEExtension = null;
    try {
        proxyAEExtension = ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity()
                .getAEExtension(ProxyAEExtension.class);
    } 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-forwardOption-title").setVisible(forwardOptionModel == null));
    add(new WebMarkupContainer("edit-forwardOption-title").setVisible(forwardOptionModel != null));

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

    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);

    if (forwardOptionModel == null) {
        destinationAETitleModel = Model.of(uniqueAETitles.get(0));
        scheduleDaysModel = Model.of();
        scheduleHoursModel = Model.of();
        descriptionModel = Model.of();
        convertEmf2SfModel = Model.of(false);
    } else {
        if (!uniqueAETitles.contains(forwardOptionModel.getDestinationAETitle())) {
            uniqueAETitles = new ArrayList<String>(uniqueAETitles);
            uniqueAETitles.add(forwardOptionModel.getDestinationAETitle());
            Collections.sort(uniqueAETitles);
        }
        destinationAETitleModel = Model.of(forwardOptionModel.getDestinationAETitle());
        scheduleDaysModel = Model.of(forwardOptionModel.getForwardOption().getSchedule().getDays());
        scheduleHoursModel = Model.of(forwardOptionModel.getForwardOption().getSchedule().getHours());
        descriptionModel = Model.of(forwardOptionModel.getForwardOption().getDescription());
        convertEmf2SfModel = Model.of(forwardOptionModel.getForwardOption().isConvertEmf2Sf());
    }

    form.add(new Label("destinationAETitle.label",
            new ResourceModel("dicom.edit.forwardOption.destinationAETitle.label")))
            .add(new DropDownChoice<String>("destinationAETitle", destinationAETitleModel, uniqueAETitles)
                    .setNullValid(false).setRequired(true).add(new DestinationAETitleValidator(
                            destinationAETitleModel.getObject(), proxyAEExtension.getForwardOptions())));

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

    optionalContainer
            .add(new Label("scheduleDays.label",
                    new ResourceModel("dicom.edit.forwardOption.optional.scheduleDays.label")))
            .add(new TextField<String>("scheduleDays", scheduleDaysModel)
                    .add(new ScheduleValidator(ScheduleValidator.Type.DAYS)));

    optionalContainer
            .add(new Label("scheduleHours.label",
                    new ResourceModel("dicom.edit.forwardOption.optional.scheduleHours.label")))
            .add(new TextField<String>("scheduleHours", scheduleHoursModel)
                    .add(new ScheduleValidator(ScheduleValidator.Type.HOURS)));

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

    optionalContainer
            .add(new Label("convertEmf2Sf.label",
                    new ResourceModel("dicom.edit.forwardOption.optional.convertEmf2Sf.label")))
            .add(new CheckBox("convertEmf2Sf", convertEmf2SfModel));

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

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

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

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                Schedule schedule = new Schedule();
                schedule.setDays(scheduleDaysModel.getObject());
                schedule.setHours(scheduleHoursModel.getObject());

                ForwardOption forwardOption = new ForwardOption();
                forwardOption.setSchedule(schedule);
                forwardOption.setDescription(descriptionModel.getObject());
                forwardOption.setConvertEmf2Sf(convertEmf2SfModel.getObject());

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

                if (forwardOptionModel != null)
                    proxyAEExtension.getForwardOptions().remove(forwardOptionModel.getDestinationAETitle());

                proxyAEExtension.getForwardOptions().put(destinationAETitleModel.getObject(), forwardOption);

                ConfigTreeProvider.get().mergeDevice(
                        ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity().getDevice());
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying forward option: "
                        + 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.proxy.CreateOrEditForwardRulePage.java

License:LGPL

private void addSubmitButton(final ModalWindow window, final ForwardRuleModel forwardRuleModel,
        final ConfigTreeNode aeNode, final ExtendedForm form) {
    form.add(new IndicatingAjaxButton("submit", new ResourceModel("saveBtn"), form) {

        private static final long serialVersionUID = 1L;

        @Override//from  w  w  w .  j a  va2 s  .co  m
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                ForwardRule forwardRule = forwardRuleModel == null ? new ForwardRule()
                        : forwardRuleModel.getForwardRule();

                forwardRule.setCommonName(commonNameModel.getObject());
                forwardRule.setDestinationURIs(Arrays.asList(destinationURIModel.getArray()));
                forwardRule.setCallingAETs(Arrays.asList(callingAETitleModel.getArray()));
                forwardRule.setDimse(new ArrayList<Dimse>(dimsesModel.getDimses()));
                forwardRule.setExclusiveUseDefinedTC(exclusiveUseDefinedTCModel.getObject());
                Schedule schedule = new Schedule();
                schedule.setDays(scheduleDaysModel.getObject());
                schedule.setHours(scheduleHoursModel.getObject());
                forwardRule.setReceiveSchedule(schedule);
                forwardRule.setUseCallingAET(useCallingAETitleModel.getObject());
                forwardRule.setSopClasses(Arrays.asList(sopClassModel.getArray()));
                forwardRule.setRunPIXQuery(runPIXQueryModel.getObject());
                forwardRule.setMpps2DoseSrTemplateURI(mpps2DoseSrTemplateURIModel.getObject());
                forwardRule.setDoseSrIODTemplateURI(doseSrIODTemplateURIModel.getObject());
                forwardRule.setDescription(descriptionModel.getObject());

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

                if (forwardRuleModel == null)
                    proxyAEExtension.getForwardRules().add(forwardRule);

                ConfigTreeProvider.get().mergeDevice(
                        ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity().getDevice());
                window.close(target);
            } catch (Exception e) {
                log.error(
                        this.getClass().toString() + ": " + "Error modifying forward rule: " + 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);
        }
    });
}

From source file:org.dcm4chee.wizard.edit.proxy.CreateOrEditRetryPage.java

License:LGPL

public CreateOrEditRetryPage(final ModalWindow window, final RetryModel retryModel,
        final ConfigTreeNode aeNode) {
    super();/*w w w  .j av  a 2 s .c  o  m*/

    ProxyAEExtension proxyAEExtension = null;
    try {
        proxyAEExtension = ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity()
                .getAEExtension(ProxyAEExtension.class);
    } 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-retry-title").setVisible(retryModel == null));
    add(new WebMarkupContainer("edit-retry-title").setVisible(retryModel != null));

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

    if (retryModel == null) {
        suffixModel = Model.of(RetryObject.AAssociateRJ);
        delayModel = new TimeIntervalModel(Retry.DEFAULT_DELAY);
        retriesModel = Model.of(Retry.DEFAULT_RETRIES);
        deleteAfterFinalRetryModel = Model.of(false);
    } else {
        suffixModel = Model.of(retryModel.getRetry().getRetryObject());
        delayModel = new TimeIntervalModel(retryModel.getRetry().getDelay());
        retriesModel = Model.of(retryModel.getRetry().getNumberOfRetries());
        deleteAfterFinalRetryModel = Model.of(retryModel.getRetry().isDeleteAfterFinalRetry());
    }

    form.add(new Label("suffix.label", new ResourceModel("dicom.edit.retry.suffix.label")));
    final ArrayList<RetryObject> suffixValueList = new ArrayList<RetryObject>();
    ArrayList<String> suffixDisplayList = new ArrayList<String>();
    for (RetryObject suffix : RetryObject.values()) {
        suffixValueList.add(suffix);
        suffixDisplayList.add(suffix.getRetryNote());
    }
    DropDownChoice<RetryObject> suffixDropDown = new DropDownChoice<RetryObject>("suffix", suffixModel,
            suffixValueList, new IChoiceRenderer<Object>() {

                private static final long serialVersionUID = 1L;

                public String getDisplayValue(Object object) {
                    return ((RetryObject) object).getRetryNote();
                }

                public String getIdValue(Object object, int index) {
                    return object.toString();
                }
            });
    form.add(suffixDropDown.setNullValid(false)
            .add(new RetrySuffixValidator(
                    retryModel == null ? null : retryModel.getRetry().getRetryObject().getSuffix(),
                    proxyAEExtension.getRetries())));

    form.add(new Label("delay.label", new ResourceModel("dicom.edit.retry.delay.label")))
            .add(new TextField<String>("delay", delayModel).setRequired(true).add(new TimeIntervalValidator())
                    .add(new AttributeModifier("title", new ResourceModel("dicom.edit.retry.delay.tooltip"))));

    form.add(new Label("retries.label", new ResourceModel("dicom.edit.retry.retries.label")))
            .add(new TextField<Integer>("retries", retriesModel).setType(Integer.class).setRequired(true));

    form.add(new Label("deleteAfterFinalRetry.label",
            new ResourceModel("dicom.edit.retry.deleteAfterFinalRetry.label")))
            .add(new CheckBox("deleteAfterFinalRetry", deleteAfterFinalRetryModel));

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

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                Retry retry = new Retry(suffixModel.getObject(), delayModel.getSeconds(),
                        retriesModel.getObject(), deleteAfterFinalRetryModel.getObject());

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

                if (retryModel != null)
                    proxyAEExtension.getRetries().remove(retryModel.getRetry());
                proxyAEExtension.getRetries().add(retry);

                ConfigTreeProvider.get().mergeDevice(
                        ((ApplicationEntityModel) aeNode.getModel()).getApplicationEntity().getDevice());
                window.close(target);
            } catch (Exception e) {
                log.error(this.getClass().toString() + ": " + "Error modifying retry: " + 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));
}