Source

ApplicationField.js

import { CallbackType, RequestHelper } from "./helper/module";

export class ApplicationField {
    /** @type {any} */
    #txApplicationField;
    get txApplicationField() { return this.#txApplicationField; }

    /** @type {string=} */
    #name;
    /** 
     *  @property name
     *  @type {string=} 
     */
    get name() { return this.#name; }

    /** @type {string=} */
    #typeName;
    get typeName() { return this.#typeName; }

    /** @type {string=} */
    #text;
    get text() { return this.#text; }

    /** @type {Array<string>=} */
    #parameters;
    get parameters() { return this.#parameters; }

    /** @type {number=} */
    #start;
    get start() { return this.#start; }

    /**
     * Wrapper für TXTextControl.ApplicationField
     * @param {*} txApplicationField 
     */
    constructor(txApplicationField) {
        this.#txApplicationField = txApplicationField;
        this.#bindCallbacks();
    }

    /**
     * binding callback functions
     */
    #bindCallbacks() {
        this.#txApplicationField.getName = this.#txApplicationField.getName.bind(this.#txApplicationField);
        this.#txApplicationField.setName = this.#txApplicationField.setName.bind(this.#txApplicationField);
        this.#txApplicationField.getTypeName = this.#txApplicationField.getTypeName.bind(this.#txApplicationField);
        this.#txApplicationField.getParameters = this.#txApplicationField.getParameters.bind(this.#txApplicationField);
        this.#txApplicationField.setParameters = this.#txApplicationField.setParameters.bind(this.#txApplicationField);
        this.#txApplicationField.getText = this.#txApplicationField.getText.bind(this.#txApplicationField);
        this.#txApplicationField.setText = this.#txApplicationField.setText.bind(this.#txApplicationField);
        this.#txApplicationField.getStart = this.#txApplicationField.getStart.bind(this.#txApplicationField);
    }

    //#region setter

    /**
     * Sets the name of a text field
     * @public
     * @method
     * @param {string} name
     * @returns {Promise<void>}
     */
    async setName(name) {
        await RequestHelper.Promise(this.#txApplicationField.setName,
            name,
            CallbackType.EmptyRequestCallback,
            CallbackType.ErrorCallback);
        this.#name = this.#name;
    }

    /**
     * Sets the field's parameters
     * @public
     * @param {Array<string>} parameters
     * @returns {Promise<void>}
     */
    async setParameters(parameters) {
        await RequestHelper.Promise(this.#txApplicationField.setParameters,
            parameters,
            CallbackType.EmptyRequestCallback,
            CallbackType.ErrorCallback);
        this.#parameters = this.#parameters;
    }

    /**
     * Sets the text which is contained within a text field
     * @param {string} text
     * @returns {Promise<void>}
     */
    async setText(text) {
        await RequestHelper.Promise(this.#txApplicationField.setText,
            text,
            CallbackType.EmptyRequestCallback,
            CallbackType.ErrorCallback);
        this.#text = this.#text;
    }
    //#endregion


    //#region getter
    /**
     * Relates a user-defined name to a text field
     * @returns {Promise<string>}
     */
    async getName() {
        if (this.#name == null || typeof this.#name === 'undefined') {
            let result = await RequestHelper.Promise(this.txApplicationField.getName,
                CallbackType.RequestStringCallback,
                CallbackType.ErrorCallback);
            this.#name = result;
        }
        return /** @type {string} */(this.#name);
    }

    /**
     * Gets the field's type name
     * @returns {Promise<string>}
     */
    async getTypeName() {
        if (this.#typeName == null || typeof this.#typeName === 'undefined') {
            let result = await RequestHelper.Promise(this.txApplicationField.getTypeName,
                CallbackType.RequestStringCallback,
                CallbackType.ErrorCallback);
            this.#typeName = result;
        }
        return /** @type {string} */(this.#typeName);
    }

    /**
     * Gets the field' parameters
     * @returns {Promise<Array<string>>}
     */
    async getParameters() {
        if (this.#parameters == null || typeof this.#parameters === 'undefined') {
            let result = await RequestHelper.Promise(this.txApplicationField.getParameters,
                CallbackType.RequestStringsCallback,
                CallbackType.ErrorCallback);
            this.#parameters = result;
        }
        return /** @type {Array<string>} */(this.#parameters);
    }

    /**
     * Gets the text which is contained within a text field
     * @returns {Promise<string>}
     */
    async getText() {
        if (this.#text == null || typeof this.#text === 'undefined') {
            let result = await RequestHelper.Promise(this.txApplicationField.getText,
                CallbackType.RequestStringCallback,
                CallbackType.ErrorCallback);
            this.#text = result;
        }
        return /** @type {string} */(this.#text);
    }

    /**
     * Gets the first character position (one-based) of a text field
     * @returns {Promise<number>}
     */
    async getStart() {
        if (this.#start == null || typeof this.#start === 'undefined') {
            let result = await RequestHelper.Promise(this.txApplicationField.getStart,
                CallbackType.RequestNumberCallback,
                CallbackType.ErrorCallback);
            this.#start = result;
        }
        return /** @type {number} */(this.#start);
    }
    //#endregion
}