net.sourceforge.msscodefactory.cfbam.v2_7.CFBamJavaFX.CFBamJavaFXUInt16ColAttrPane.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.msscodefactory.cfbam.v2_7.CFBamJavaFX.CFBamJavaFXUInt16ColAttrPane.java

Source

// Description: Java 8 JavaFX Attribute Pane implementation for UInt16Col.

/*
 *   CFBam
 *
 *   Copyright (c) 2014-2016 Mark Sobkow
 *   
 *   This program is available as free software under the GNU GPL v3, or
 *   under a commercial license from Mark Sobkow.  For commercial licensing
 *   details, please contact msobkow@sasktel.net.
 *   
 *   Under the terms of the GPL:
 *   
 *      This program is free software: you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation, either version 3 of the License, or
 *      (at your option) any later version.
 *     
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *     
 *      You should have received a copy of the GNU General Public License
 *      along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *   
 */

package net.sourceforge.msscodefactory.cfbam.v2_7.CFBamJavaFX;

import java.math.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Control;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.Priority;
import net.sourceforge.msscodefactory.cflib.v2_7.CFLib.*;
import net.sourceforge.msscodefactory.cflib.v2_7.CFLib.JavaFX.*;
import net.sourceforge.msscodefactory.cflib.v2_7.CFLib.JavaFX.CFReferenceEditor.ICFReferenceCallback;
import org.apache.commons.codec.binary.Base64;
import net.sourceforge.msscodefactory.cfsecurity.v2_7.CFSecurity.*;
import net.sourceforge.msscodefactory.cfinternet.v2_7.CFInternet.*;
import net.sourceforge.msscodefactory.cfbam.v2_7.CFBam.*;
import net.sourceforge.msscodefactory.cfsecurity.v2_7.CFSecurityObj.*;
import net.sourceforge.msscodefactory.cfinternet.v2_7.CFInternetObj.*;
import net.sourceforge.msscodefactory.cfbam.v2_7.CFBamObj.*;
import net.sourceforge.msscodefactory.cfsecurity.v2_7.CFSecurityJavaFX.*;
import net.sourceforge.msscodefactory.cfinternet.v2_7.CFInternetJavaFX.*;

/**
 *   CFBamJavaFXUInt16ColAttrPane JavaFX Attribute Pane implementation
 *   for UInt16Col.
 */
public class CFBamJavaFXUInt16ColAttrPane extends CFGridPane implements ICFBamJavaFXUInt16ColPaneCommon {
    protected ICFFormManager cfFormManager = null;
    protected ICFBamJavaFXSchema javafxSchema = null;
    boolean javafxIsInitializing = true;

    protected class DefSchemaCFLabel extends CFLabel {
        public DefSchemaCFLabel() {
            super();
            setText("Defining Schema Definition");
        }
    }

    protected class CallbackDefSchemaChosen implements ICFBamJavaFXSchemaDefChosen {
        public CallbackDefSchemaChosen() {
        }

        public void choseSchemaDef(ICFBamSchemaDefObj value) {
            if (javafxReferenceLookupDefSchema != null) {
                ICFBamUInt16ColObj cur = getJavaFXFocusAsUInt16Col();
                if (cur != null) {
                    ICFBamUInt16ColEditObj editObj = (ICFBamUInt16ColEditObj) cur.getEdit();
                    if (null != editObj) {
                        CFPane.PaneMode curMode = getPaneMode();
                        if ((curMode == CFPane.PaneMode.Add) || (curMode == CFPane.PaneMode.Edit)) {
                            javafxReferenceLookupDefSchema.setReferencedObject(value);
                            editObj.setOptionalLookupDefSchema(value);
                        }
                    }
                }
            }
        }
    }

    protected class DefSchemaReferenceCallback implements ICFReferenceCallback {
        public void chose(ICFLibAnyObj value) {
            final String S_ProcName = "chose";
            Node cont;
            ICFBamSchemaObj schemaObj = (ICFBamSchemaObj) javafxSchema.getSchema();
            ICFBamUInt16ColObj focus = getJavaFXFocusAsUInt16Col();
            ICFBamUInt16ColEditObj editObj = (ICFBamUInt16ColEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFBamSchemaDefObj referencedObj = (ICFBamSchemaDefObj) javafxReferenceLookupDefSchema
                    .getReferencedObject();
            java.util.List<ICFBamSchemaDefObj> listOfSchemaDef = null;
            Collection<ICFBamSchemaDefObj> cltn = null;
            CFBorderPane form = javafxSchema.getSchemaDefFactory().newPickerForm(cfFormManager, referencedObj, null,
                    cltn, new CallbackDefSchemaChosen());
            ((ICFBamJavaFXSchemaDefPaneCommon) form).setPaneMode(CFPane.PaneMode.View);
            cfFormManager.pushForm(form);
        }

        public void view(ICFLibAnyObj value) {
            final String S_ProcName = "actionPerformed";
            ICFBamUInt16ColObj focus = getJavaFXFocusAsUInt16Col();
            if (focus != null) {
                ICFBamSchemaDefObj referencedObj = (ICFBamSchemaDefObj) javafxReferenceLookupDefSchema
                        .getReferencedObject();
                CFBorderPane form = null;
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("SCHM".equals(classCode)) {
                        form = javafxSchema.getSchemaDefFactory().newAddForm(cfFormManager, referencedObj, null,
                                true);
                        ICFBamJavaFXSchemaDefPaneCommon spec = (ICFBamJavaFXSchemaDefPaneCommon) form;
                        spec.setJavaFXFocus(referencedObj);
                        spec.setPaneMode(CFPane.PaneMode.View);
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "javaFXFocus", focus, "ICFBamSchemaDefObj");
                    }
                    cfFormManager.pushForm(form);
                }
            }
        }
    }

    protected class DefSchemaCFReferenceEditor extends CFReferenceEditor {
        public DefSchemaCFReferenceEditor() {
            super(new DefSchemaReferenceCallback());
            setFieldName("Defining Schema Definition");
        }
    }

    protected class IdCFLabel extends CFLabel {
        public IdCFLabel() {
            super();
            setText("Id");
        }
    }

    protected class IdEditor extends CFInt64Editor {
        public IdEditor() {
            super();
            setMinValue(CFBamValueBuff.ID_MIN_VALUE);
            setFieldName("Id");
        }
    }

    protected class NameCFLabel extends CFLabel {
        public NameCFLabel() {
            super();
            setText("Name");
        }
    }

    protected class NameEditor extends CFStringEditor {
        public NameEditor() {
            super();
            setMaxLen(192);
            setFieldName("Name");
        }
    }

    protected class ShortNameCFLabel extends CFLabel {
        public ShortNameCFLabel() {
            super();
            setText("Short Name");
        }
    }

    protected class ShortNameEditor extends CFStringEditor {
        public ShortNameEditor() {
            super();
            setMaxLen(16);
            setFieldName("Short Name");
        }
    }

    protected class LabelCFLabel extends CFLabel {
        public LabelCFLabel() {
            super();
            setText("Label");
        }
    }

    protected class LabelEditor extends CFStringEditor {
        public LabelEditor() {
            super();
            setMaxLen(64);
            setFieldName("Label");
        }
    }

    protected class ShortDescriptionCFLabel extends CFLabel {
        public ShortDescriptionCFLabel() {
            super();
            setText("Short Description");
        }
    }

    protected class ShortDescriptionEditor extends CFStringEditor {
        public ShortDescriptionEditor() {
            super();
            setMaxLen(128);
            setFieldName("Short Description");
        }
    }

    protected class DescriptionCFLabel extends CFLabel {
        public DescriptionCFLabel() {
            super();
            setText("Description");
        }
    }

    protected class DescriptionEditor extends CFStringEditor {
        public DescriptionEditor() {
            super();
            setMaxLen(1023);
            setFieldName("Description");
        }
    }

    protected class IsNullableCFLabel extends CFLabel {
        public IsNullableCFLabel() {
            super();
            setText("Is Nullable");
        }
    }

    protected class IsNullableEditor extends CFBoolEditor {
        public IsNullableEditor() {
            super();
            setIsNullable(false);
            setFieldName("Is Nullable");
        }
    }

    protected class GenerateIdCFLabel extends CFLabel {
        public GenerateIdCFLabel() {
            super();
            setText("Generate Id");
        }
    }

    protected class GenerateIdEditor extends CFBoolEditor {
        public GenerateIdEditor() {
            super();
            setIsNullable(true);
            setFieldName("Generate Id");
        }
    }

    protected class DefaultVisibilityCFLabel extends CFLabel {
        public DefaultVisibilityCFLabel() {
            super();
            setText("Default Visibility");
        }
    }

    protected class DefaultVisibilityEditor extends CFBoolEditor {
        public DefaultVisibilityEditor() {
            super();
            setIsNullable(false);
            setFieldName("Default Visibility");
        }
    }

    protected class DbNameCFLabel extends CFLabel {
        public DbNameCFLabel() {
            super();
            setText("Db Name");
        }
    }

    protected class DbNameEditor extends CFStringEditor {
        public DbNameEditor() {
            super();
            setMaxLen(32);
            setFieldName("Db Name");
        }
    }

    protected class InitValueCFLabel extends CFLabel {
        public InitValueCFLabel() {
            super();
            setText("Init. Value");
        }
    }

    protected class InitValueEditor extends CFUInt16Editor {
        public InitValueEditor() {
            super();
            setMinValue(CFBamUInt16DefBuff.INITVALUE_MIN_VALUE);
            setFieldName("Init. Value");
        }
    }

    protected class DefaultValueCFLabel extends CFLabel {
        public DefaultValueCFLabel() {
            super();
            setText("Default Value");
        }
    }

    protected class DefaultValueEditor extends CFUInt16Editor {
        public DefaultValueEditor() {
            super();
            setMinValue(CFBamUInt16DefBuff.DEFAULTVALUE_MIN_VALUE);
            setFieldName("Default Value");
        }
    }

    protected class MinValueCFLabel extends CFLabel {
        public MinValueCFLabel() {
            super();
            setText("Min. Value");
        }
    }

    protected class MinValueEditor extends CFUInt16Editor {
        public MinValueEditor() {
            super();
            setMinValue(CFBamUInt16DefBuff.MINVALUE_MIN_VALUE);
            setFieldName("Min. Value");
        }
    }

    protected class MaxValueCFLabel extends CFLabel {
        public MaxValueCFLabel() {
            super();
            setText("Max. Value");
        }
    }

    protected class MaxValueEditor extends CFUInt16Editor {
        public MaxValueEditor() {
            super();
            setMinValue(CFBamUInt16DefBuff.MAXVALUE_MIN_VALUE);
            setFieldName("Max. Value");
        }
    }

    protected class NullValueCFLabel extends CFLabel {
        public NullValueCFLabel() {
            super();
            setText("Null Value");
        }
    }

    protected class NullValueEditor extends CFUInt16Editor {
        public NullValueEditor() {
            super();
            setMinValue(CFBamUInt16DefBuff.NULLVALUE_MIN_VALUE);
            setFieldName("Null Value");
        }
    }

    protected class UnknownValueCFLabel extends CFLabel {
        public UnknownValueCFLabel() {
            super();
            setText("Unknown Value");
        }
    }

    protected class UnknownValueEditor extends CFUInt16Editor {
        public UnknownValueEditor() {
            super();
            setMinValue(CFBamUInt16DefBuff.UNKNOWNVALUE_MIN_VALUE);
            setFieldName("Unknown Value");
        }
    }

    protected ICFBamSchemaDefObj javafxLookupDefSchemaObj = null;
    protected DefSchemaCFLabel javafxLabelLookupDefSchema = null;
    protected DefSchemaCFReferenceEditor javafxReferenceLookupDefSchema = null;
    protected IdCFLabel javafxLabelId = null;
    protected IdEditor javafxEditorId = null;
    protected NameCFLabel javafxLabelName = null;
    protected NameEditor javafxEditorName = null;
    protected ShortNameCFLabel javafxLabelShortName = null;
    protected ShortNameEditor javafxEditorShortName = null;
    protected LabelCFLabel javafxLabelLabel = null;
    protected LabelEditor javafxEditorLabel = null;
    protected ShortDescriptionCFLabel javafxLabelShortDescription = null;
    protected ShortDescriptionEditor javafxEditorShortDescription = null;
    protected DescriptionCFLabel javafxLabelDescription = null;
    protected DescriptionEditor javafxEditorDescription = null;
    protected IsNullableCFLabel javafxLabelIsNullable = null;
    protected IsNullableEditor javafxEditorIsNullable = null;
    protected GenerateIdCFLabel javafxLabelGenerateId = null;
    protected GenerateIdEditor javafxEditorGenerateId = null;
    protected DefaultVisibilityCFLabel javafxLabelDefaultVisibility = null;
    protected DefaultVisibilityEditor javafxEditorDefaultVisibility = null;
    protected DbNameCFLabel javafxLabelDbName = null;
    protected DbNameEditor javafxEditorDbName = null;
    protected InitValueCFLabel javafxLabelInitValue = null;
    protected InitValueEditor javafxEditorInitValue = null;
    protected DefaultValueCFLabel javafxLabelDefaultValue = null;
    protected DefaultValueEditor javafxEditorDefaultValue = null;
    protected MinValueCFLabel javafxLabelMinValue = null;
    protected MinValueEditor javafxEditorMinValue = null;
    protected MaxValueCFLabel javafxLabelMaxValue = null;
    protected MaxValueEditor javafxEditorMaxValue = null;
    protected NullValueCFLabel javafxLabelNullValue = null;
    protected NullValueEditor javafxEditorNullValue = null;
    protected UnknownValueCFLabel javafxLabelUnknownValue = null;
    protected UnknownValueEditor javafxEditorUnknownValue = null;

    public CFBamJavaFXUInt16ColAttrPane(ICFFormManager formManager, ICFBamJavaFXSchema argSchema,
            ICFBamUInt16ColObj argFocus) {
        super();
        Control ctrl;
        CFLabel label;
        CFReferenceEditor reference;
        final String S_ProcName = "construct-schema-focus";
        if (formManager == null) {
            throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 1,
                    "formManager");
        }
        cfFormManager = formManager;
        if (argSchema == null) {
            throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 2,
                    "argSchema");
        }
        // argFocus is optional; focus may be set later during execution as
        // conditions of the runtime change.
        javafxSchema = argSchema;
        setJavaFXFocusAsUInt16Col(argFocus);
        setPadding(new Insets(5));
        setHgap(5);
        setVgap(5);
        setAlignment(Pos.CENTER);
        ColumnConstraints column1 = new ColumnConstraints(125);
        ColumnConstraints column2 = new ColumnConstraints(125, 300, 500);
        column2.setHgrow(Priority.ALWAYS);
        getColumnConstraints().addAll(column1, column2);
        int gridRow = 0;
        label = getJavaFXLabelLookupDefSchema();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        reference = getJavaFXReferenceLookupDefSchema();
        setHalignment(reference, HPos.LEFT);
        add(reference, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelId();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorId();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelName();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorName();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelShortName();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorShortName();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelLabel();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorLabel();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelShortDescription();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorShortDescription();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelDescription();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorDescription();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelIsNullable();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorIsNullable();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelGenerateId();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorGenerateId();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelDefaultVisibility();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorDefaultVisibility();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelDbName();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorDbName();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelInitValue();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorInitValue();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelDefaultValue();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorDefaultValue();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelMinValue();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorMinValue();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelMaxValue();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorMaxValue();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelNullValue();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorNullValue();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        label = getJavaFXLabelUnknownValue();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorUnknownValue();
        setHalignment(ctrl, HPos.LEFT);
        add(ctrl, 1, gridRow);

        gridRow++;

        populateFields();
        adjustComponentEnableStates();
        javafxIsInitializing = false;
    }

    public ICFFormManager getCFFormManager() {
        return (cfFormManager);
    }

    public void setCFFormManager(ICFFormManager value) {
        final String S_ProcName = "setCFFormManager";
        if (value == null) {
            throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 1, "value");
        }
        cfFormManager = value;
    }

    public ICFBamJavaFXSchema getJavaFXSchema() {
        return (javafxSchema);
    }

    public void setJavaFXFocus(ICFLibAnyObj value) {
        final String S_ProcName = "setJavaFXFocus";
        if ((value == null) || (value instanceof ICFBamUInt16ColObj)) {
            super.setJavaFXFocus(value);
        } else {
            throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(), S_ProcName, "value",
                    value, "ICFBamUInt16ColObj");
        }
        populateFields();
        adjustComponentEnableStates();
    }

    public ICFBamUInt16ColObj getJavaFXFocusAsUInt16Col() {
        return ((ICFBamUInt16ColObj) getJavaFXFocus());
    }

    public void setJavaFXFocusAsUInt16Col(ICFBamUInt16ColObj value) {
        setJavaFXFocus(value);
    }

    public ICFBamSchemaDefObj getJavaFXLookupDefSchemaObj() {
        return (javafxLookupDefSchemaObj);
    }

    public void setJavaFXLookupDefSchemaObj(ICFBamSchemaDefObj value) {
        javafxLookupDefSchemaObj = value;
    }

    public CFLabel getJavaFXLabelLookupDefSchema() {
        if (javafxLabelLookupDefSchema == null) {
            javafxLabelLookupDefSchema = new DefSchemaCFLabel();
        }
        return (javafxLabelLookupDefSchema);
    }

    public CFReferenceEditor getJavaFXReferenceLookupDefSchema() {
        if (javafxReferenceLookupDefSchema == null) {
            javafxReferenceLookupDefSchema = new DefSchemaCFReferenceEditor();
        }
        return (javafxReferenceLookupDefSchema);
    }

    public void setJavaFXReferenceLookupDefSchema(DefSchemaCFReferenceEditor value) {
        javafxReferenceLookupDefSchema = value;
    }

    public IdCFLabel getJavaFXLabelId() {
        if (javafxLabelId == null) {
            javafxLabelId = new IdCFLabel();
        }
        return (javafxLabelId);
    }

    public void setJavaFXLabelId(IdCFLabel value) {
        javafxLabelId = value;
    }

    public IdEditor getJavaFXEditorId() {
        if (javafxEditorId == null) {
            javafxEditorId = new IdEditor();
        }
        return (javafxEditorId);
    }

    public void setJavaFXEditorId(IdEditor value) {
        javafxEditorId = value;
    }

    public NameCFLabel getJavaFXLabelName() {
        if (javafxLabelName == null) {
            javafxLabelName = new NameCFLabel();
        }
        return (javafxLabelName);
    }

    public void setJavaFXLabelName(NameCFLabel value) {
        javafxLabelName = value;
    }

    public NameEditor getJavaFXEditorName() {
        if (javafxEditorName == null) {
            javafxEditorName = new NameEditor();
        }
        return (javafxEditorName);
    }

    public void setJavaFXEditorName(NameEditor value) {
        javafxEditorName = value;
    }

    public ShortNameCFLabel getJavaFXLabelShortName() {
        if (javafxLabelShortName == null) {
            javafxLabelShortName = new ShortNameCFLabel();
        }
        return (javafxLabelShortName);
    }

    public void setJavaFXLabelShortName(ShortNameCFLabel value) {
        javafxLabelShortName = value;
    }

    public ShortNameEditor getJavaFXEditorShortName() {
        if (javafxEditorShortName == null) {
            javafxEditorShortName = new ShortNameEditor();
        }
        return (javafxEditorShortName);
    }

    public void setJavaFXEditorShortName(ShortNameEditor value) {
        javafxEditorShortName = value;
    }

    public LabelCFLabel getJavaFXLabelLabel() {
        if (javafxLabelLabel == null) {
            javafxLabelLabel = new LabelCFLabel();
        }
        return (javafxLabelLabel);
    }

    public void setJavaFXLabelLabel(LabelCFLabel value) {
        javafxLabelLabel = value;
    }

    public LabelEditor getJavaFXEditorLabel() {
        if (javafxEditorLabel == null) {
            javafxEditorLabel = new LabelEditor();
        }
        return (javafxEditorLabel);
    }

    public void setJavaFXEditorLabel(LabelEditor value) {
        javafxEditorLabel = value;
    }

    public ShortDescriptionCFLabel getJavaFXLabelShortDescription() {
        if (javafxLabelShortDescription == null) {
            javafxLabelShortDescription = new ShortDescriptionCFLabel();
        }
        return (javafxLabelShortDescription);
    }

    public void setJavaFXLabelShortDescription(ShortDescriptionCFLabel value) {
        javafxLabelShortDescription = value;
    }

    public ShortDescriptionEditor getJavaFXEditorShortDescription() {
        if (javafxEditorShortDescription == null) {
            javafxEditorShortDescription = new ShortDescriptionEditor();
        }
        return (javafxEditorShortDescription);
    }

    public void setJavaFXEditorShortDescription(ShortDescriptionEditor value) {
        javafxEditorShortDescription = value;
    }

    public DescriptionCFLabel getJavaFXLabelDescription() {
        if (javafxLabelDescription == null) {
            javafxLabelDescription = new DescriptionCFLabel();
        }
        return (javafxLabelDescription);
    }

    public void setJavaFXLabelDescription(DescriptionCFLabel value) {
        javafxLabelDescription = value;
    }

    public DescriptionEditor getJavaFXEditorDescription() {
        if (javafxEditorDescription == null) {
            javafxEditorDescription = new DescriptionEditor();
        }
        return (javafxEditorDescription);
    }

    public void setJavaFXEditorDescription(DescriptionEditor value) {
        javafxEditorDescription = value;
    }

    public IsNullableCFLabel getJavaFXLabelIsNullable() {
        if (javafxLabelIsNullable == null) {
            javafxLabelIsNullable = new IsNullableCFLabel();
        }
        return (javafxLabelIsNullable);
    }

    public void setJavaFXLabelIsNullable(IsNullableCFLabel value) {
        javafxLabelIsNullable = value;
    }

    public IsNullableEditor getJavaFXEditorIsNullable() {
        if (javafxEditorIsNullable == null) {
            javafxEditorIsNullable = new IsNullableEditor();
        }
        return (javafxEditorIsNullable);
    }

    public void setJavaFXEditorIsNullable(IsNullableEditor value) {
        javafxEditorIsNullable = value;
    }

    public GenerateIdCFLabel getJavaFXLabelGenerateId() {
        if (javafxLabelGenerateId == null) {
            javafxLabelGenerateId = new GenerateIdCFLabel();
        }
        return (javafxLabelGenerateId);
    }

    public void setJavaFXLabelGenerateId(GenerateIdCFLabel value) {
        javafxLabelGenerateId = value;
    }

    public GenerateIdEditor getJavaFXEditorGenerateId() {
        if (javafxEditorGenerateId == null) {
            javafxEditorGenerateId = new GenerateIdEditor();
        }
        return (javafxEditorGenerateId);
    }

    public void setJavaFXEditorGenerateId(GenerateIdEditor value) {
        javafxEditorGenerateId = value;
    }

    public DefaultVisibilityCFLabel getJavaFXLabelDefaultVisibility() {
        if (javafxLabelDefaultVisibility == null) {
            javafxLabelDefaultVisibility = new DefaultVisibilityCFLabel();
        }
        return (javafxLabelDefaultVisibility);
    }

    public void setJavaFXLabelDefaultVisibility(DefaultVisibilityCFLabel value) {
        javafxLabelDefaultVisibility = value;
    }

    public DefaultVisibilityEditor getJavaFXEditorDefaultVisibility() {
        if (javafxEditorDefaultVisibility == null) {
            javafxEditorDefaultVisibility = new DefaultVisibilityEditor();
        }
        return (javafxEditorDefaultVisibility);
    }

    public void setJavaFXEditorDefaultVisibility(DefaultVisibilityEditor value) {
        javafxEditorDefaultVisibility = value;
    }

    public DbNameCFLabel getJavaFXLabelDbName() {
        if (javafxLabelDbName == null) {
            javafxLabelDbName = new DbNameCFLabel();
        }
        return (javafxLabelDbName);
    }

    public void setJavaFXLabelDbName(DbNameCFLabel value) {
        javafxLabelDbName = value;
    }

    public DbNameEditor getJavaFXEditorDbName() {
        if (javafxEditorDbName == null) {
            javafxEditorDbName = new DbNameEditor();
        }
        return (javafxEditorDbName);
    }

    public void setJavaFXEditorDbName(DbNameEditor value) {
        javafxEditorDbName = value;
    }

    public InitValueCFLabel getJavaFXLabelInitValue() {
        if (javafxLabelInitValue == null) {
            javafxLabelInitValue = new InitValueCFLabel();
        }
        return (javafxLabelInitValue);
    }

    public void setJavaFXLabelInitValue(InitValueCFLabel value) {
        javafxLabelInitValue = value;
    }

    public InitValueEditor getJavaFXEditorInitValue() {
        if (javafxEditorInitValue == null) {
            javafxEditorInitValue = new InitValueEditor();
        }
        return (javafxEditorInitValue);
    }

    public void setJavaFXEditorInitValue(InitValueEditor value) {
        javafxEditorInitValue = value;
    }

    public DefaultValueCFLabel getJavaFXLabelDefaultValue() {
        if (javafxLabelDefaultValue == null) {
            javafxLabelDefaultValue = new DefaultValueCFLabel();
        }
        return (javafxLabelDefaultValue);
    }

    public void setJavaFXLabelDefaultValue(DefaultValueCFLabel value) {
        javafxLabelDefaultValue = value;
    }

    public DefaultValueEditor getJavaFXEditorDefaultValue() {
        if (javafxEditorDefaultValue == null) {
            javafxEditorDefaultValue = new DefaultValueEditor();
        }
        return (javafxEditorDefaultValue);
    }

    public void setJavaFXEditorDefaultValue(DefaultValueEditor value) {
        javafxEditorDefaultValue = value;
    }

    public MinValueCFLabel getJavaFXLabelMinValue() {
        if (javafxLabelMinValue == null) {
            javafxLabelMinValue = new MinValueCFLabel();
        }
        return (javafxLabelMinValue);
    }

    public void setJavaFXLabelMinValue(MinValueCFLabel value) {
        javafxLabelMinValue = value;
    }

    public MinValueEditor getJavaFXEditorMinValue() {
        if (javafxEditorMinValue == null) {
            javafxEditorMinValue = new MinValueEditor();
        }
        return (javafxEditorMinValue);
    }

    public void setJavaFXEditorMinValue(MinValueEditor value) {
        javafxEditorMinValue = value;
    }

    public MaxValueCFLabel getJavaFXLabelMaxValue() {
        if (javafxLabelMaxValue == null) {
            javafxLabelMaxValue = new MaxValueCFLabel();
        }
        return (javafxLabelMaxValue);
    }

    public void setJavaFXLabelMaxValue(MaxValueCFLabel value) {
        javafxLabelMaxValue = value;
    }

    public MaxValueEditor getJavaFXEditorMaxValue() {
        if (javafxEditorMaxValue == null) {
            javafxEditorMaxValue = new MaxValueEditor();
        }
        return (javafxEditorMaxValue);
    }

    public void setJavaFXEditorMaxValue(MaxValueEditor value) {
        javafxEditorMaxValue = value;
    }

    public NullValueCFLabel getJavaFXLabelNullValue() {
        if (javafxLabelNullValue == null) {
            javafxLabelNullValue = new NullValueCFLabel();
        }
        return (javafxLabelNullValue);
    }

    public void setJavaFXLabelNullValue(NullValueCFLabel value) {
        javafxLabelNullValue = value;
    }

    public NullValueEditor getJavaFXEditorNullValue() {
        if (javafxEditorNullValue == null) {
            javafxEditorNullValue = new NullValueEditor();
        }
        return (javafxEditorNullValue);
    }

    public void setJavaFXEditorNullValue(NullValueEditor value) {
        javafxEditorNullValue = value;
    }

    public UnknownValueCFLabel getJavaFXLabelUnknownValue() {
        if (javafxLabelUnknownValue == null) {
            javafxLabelUnknownValue = new UnknownValueCFLabel();
        }
        return (javafxLabelUnknownValue);
    }

    public void setJavaFXLabelUnknownValue(UnknownValueCFLabel value) {
        javafxLabelUnknownValue = value;
    }

    public UnknownValueEditor getJavaFXEditorUnknownValue() {
        if (javafxEditorUnknownValue == null) {
            javafxEditorUnknownValue = new UnknownValueEditor();
        }
        return (javafxEditorUnknownValue);
    }

    public void setJavaFXEditorUnknownValue(UnknownValueEditor value) {
        javafxEditorUnknownValue = value;
    }

    public void populateFields() {
        ICFBamUInt16ColObj popObj;
        ICFBamUInt16ColObj focus = getJavaFXFocusAsUInt16Col();
        if (focus != null) {
            popObj = (ICFBamUInt16ColObj) (focus.getEdit());
            if (popObj == null) {
                popObj = focus;
            }
        } else {
            popObj = null;
        }
        if (getPaneMode() == CFPane.PaneMode.Unknown) {
            popObj = null;
        }
        if (popObj == null) {
            javafxLookupDefSchemaObj = null;
        } else {
            javafxLookupDefSchemaObj = (ICFBamSchemaDefObj) popObj.getOptionalLookupDefSchema(javafxIsInitializing);
        }
        if (javafxReferenceLookupDefSchema != null) {
            javafxReferenceLookupDefSchema.setReferencedObject(javafxLookupDefSchemaObj);
        }

        if (popObj == null) {
            getJavaFXEditorId().setInt64Value(null);
        } else {
            getJavaFXEditorId().setInt64Value(popObj.getRequiredId());
        }

        if (popObj == null) {
            getJavaFXEditorName().setStringValue(null);
        } else {
            getJavaFXEditorName().setStringValue(popObj.getRequiredName());
        }

        if (popObj == null) {
            getJavaFXEditorShortName().setStringValue(null);
        } else {
            getJavaFXEditorShortName().setStringValue(popObj.getOptionalShortName());
        }

        if (popObj == null) {
            getJavaFXEditorLabel().setStringValue(null);
        } else {
            getJavaFXEditorLabel().setStringValue(popObj.getOptionalLabel());
        }

        if (popObj == null) {
            getJavaFXEditorShortDescription().setStringValue(null);
        } else {
            getJavaFXEditorShortDescription().setStringValue(popObj.getOptionalShortDescription());
        }

        if (popObj == null) {
            getJavaFXEditorDescription().setStringValue(null);
        } else {
            getJavaFXEditorDescription().setStringValue(popObj.getOptionalDescription());
        }

        if (popObj == null) {
            getJavaFXEditorIsNullable().setBooleanValue(null);
        } else {
            getJavaFXEditorIsNullable().setBooleanValue(popObj.getRequiredIsNullable());
        }

        if (popObj == null) {
            getJavaFXEditorGenerateId().setBooleanValue(null);
        } else {
            getJavaFXEditorGenerateId().setBooleanValue(popObj.getOptionalGenerateId());
        }

        if (popObj == null) {
            getJavaFXEditorDefaultVisibility().setBooleanValue(null);
        } else {
            getJavaFXEditorDefaultVisibility().setBooleanValue(popObj.getRequiredDefaultVisibility());
        }

        if (popObj == null) {
            getJavaFXEditorDbName().setStringValue(null);
        } else {
            getJavaFXEditorDbName().setStringValue(popObj.getOptionalDbName());
        }

        if (popObj == null) {
            getJavaFXEditorInitValue().setUInt16Value(null);
        } else {
            getJavaFXEditorInitValue().setUInt16Value(popObj.getOptionalInitValue());
        }

        if (popObj == null) {
            getJavaFXEditorDefaultValue().setUInt16Value(null);
        } else {
            getJavaFXEditorDefaultValue().setUInt16Value(popObj.getOptionalDefaultValue());
        }

        if (popObj == null) {
            getJavaFXEditorMinValue().setUInt16Value(null);
        } else {
            getJavaFXEditorMinValue().setUInt16Value(popObj.getOptionalMinValue());
        }

        if (popObj == null) {
            getJavaFXEditorMaxValue().setUInt16Value(null);
        } else {
            getJavaFXEditorMaxValue().setUInt16Value(popObj.getOptionalMaxValue());
        }

        if (popObj == null) {
            getJavaFXEditorNullValue().setUInt16Value(null);
        } else {
            getJavaFXEditorNullValue().setUInt16Value(popObj.getOptionalNullValue());
        }

        if (popObj == null) {
            getJavaFXEditorUnknownValue().setUInt16Value(null);
        } else {
            getJavaFXEditorUnknownValue().setUInt16Value(popObj.getOptionalUnknownValue());
        }
    }

    public void postFields() {
        final String S_ProcName = "postFields";
        ICFBamUInt16ColObj focus = getJavaFXFocusAsUInt16Col();
        ICFBamUInt16ColEditObj editObj;
        if (focus != null) {
            editObj = (ICFBamUInt16ColEditObj) (focus.getEdit());
        } else {
            editObj = null;
        }
        if (editObj == null) {
            throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                    "Pane is unfocused or is not editing the focus object");
        }

        javafxLookupDefSchemaObj = (ICFBamSchemaDefObj) (javafxReferenceLookupDefSchema.getReferencedObject());
        editObj.setOptionalLookupDefSchema(javafxLookupDefSchemaObj);

        editObj.setRequiredName(getJavaFXEditorName().getStringValue());

        editObj.setOptionalShortName(getJavaFXEditorShortName().getStringValue());

        editObj.setOptionalLabel(getJavaFXEditorLabel().getStringValue());

        editObj.setOptionalShortDescription(getJavaFXEditorShortDescription().getStringValue());

        editObj.setOptionalDescription(getJavaFXEditorDescription().getStringValue());

        editObj.setRequiredIsNullable(getJavaFXEditorIsNullable().getBooleanValue());

        editObj.setOptionalGenerateId(getJavaFXEditorGenerateId().getBooleanValue());

        editObj.setRequiredDefaultVisibility(getJavaFXEditorDefaultVisibility().getBooleanValue());

        editObj.setOptionalDbName(getJavaFXEditorDbName().getStringValue());

        editObj.setOptionalInitValue(getJavaFXEditorInitValue().getUInt16Value());

        editObj.setOptionalDefaultValue(getJavaFXEditorDefaultValue().getUInt16Value());

        editObj.setOptionalMinValue(getJavaFXEditorMinValue().getUInt16Value());

        editObj.setOptionalMaxValue(getJavaFXEditorMaxValue().getUInt16Value());

        editObj.setOptionalNullValue(getJavaFXEditorNullValue().getUInt16Value());

        editObj.setOptionalUnknownValue(getJavaFXEditorUnknownValue().getUInt16Value());
    }

    public void setPaneMode(CFPane.PaneMode value) {
        final String S_ProcName = "setPaneMode";
        CFPane.PaneMode oldValue = getPaneMode();
        if (oldValue == value) {
            return;
        }
        ICFBamUInt16ColObj focus = getJavaFXFocusAsUInt16Col();
        if ((value != CFPane.PaneMode.Unknown) && (value != CFPane.PaneMode.View)) {
            if (focus == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "javaFXFocus");
            }
        }
        ICFBamUInt16ColEditObj editObj;
        if (focus != null) {
            editObj = (ICFBamUInt16ColEditObj) focus.getEdit();
        } else {
            editObj = null;
        }
        switch (value) {
        case Unknown:
            switch (oldValue) {
            case Unknown:
                break;
            default:
                if (editObj != null) {
                    editObj.endEdit();
                }
                break;
            }
            break;
        case Add:
            switch (oldValue) {
            case Unknown:
            case Add:
            case View:
                if (editObj == null) {
                    if (focus != null) {
                        if (!focus.getIsNew()) {
                            throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                    "Transitioning to PaneMode Add requires Focus.getIsNew() to be true");
                        }
                        editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                        if (editObj == null) {
                            throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                    "Expected beginEdit() to return a new edition of the focus object");
                        }
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                                "focus");
                    }
                }
                break;
            case Edit:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode Edit to Add");
            case Update:
                if ((editObj == null) || (!editObj.getIsNew())) {
                    throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                            "Cannot transition PaneMode Update to Add");
                }
                break;
            case Delete:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode Delete to Add");
            default:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode default to Add");
            }
            break;
        case View:
            switch (oldValue) {
            case Unknown:
                break;
            case View:
                break;
            case Edit:
                break;
            case Update:
                break;
            case Delete:
                break;
            default:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode " + oldValue + " to View");
            }
            if (editObj != null) {
                editObj.endEdit();
            }
            break;
        case Edit:
            switch (oldValue) {
            case Unknown:
                if (editObj == null) {
                    editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                    if (editObj == null) {
                        throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                "Expected beginEdit() to return a new edition of the focus object");
                    }
                }
                break;
            case View:
                if (editObj == null) {
                    editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                    if (editObj == null) {
                        throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                "Expected beginEdit() to return a new edition of the focus object");
                    }
                }
                break;
            case Edit:
                if (editObj == null) {
                    editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                    if (editObj == null) {
                        throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                "Expected beginEdit() to return a new edition of the focus object");
                    }
                }
                break;
            case Update:
                if (editObj == null) {
                    throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                            "Cannot transition PaneMode " + oldValue + " to Edit");
                }
                break;
            default:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode " + oldValue + " to Edit");
            }
            break;
        case Update:
            if ((oldValue != CFPane.PaneMode.Edit) && (oldValue != CFPane.PaneMode.Add)) {
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition from mode " + oldValue + " to Update");
            }
            super.setPaneMode(value);
            if (editObj != null) {
                postFields();
                if (editObj.getIsNew()) {
                    focus = (ICFBamUInt16ColObj) editObj.create();
                    setJavaFXFocus(focus);
                } else {
                    editObj.update();
                }
                editObj.endEdit();
                editObj = null;
            }
            setPaneMode(CFPane.PaneMode.View);
            break;
        case Delete:
            switch (oldValue) {
            case View:
                if (focus != null) {
                    if (editObj == null) {
                        editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                        if (editObj == null) {
                            throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                    "Expected beginEdit() to return a new edition of the focus object");
                        }
                    }
                }
                break;
            case Edit:
                if (focus != null) {
                    if (editObj == null) {
                        editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                        if (editObj == null) {
                            throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                    "Expected beginEdit() to return a new edition of the focus object");
                        }
                    }
                }
                break;
            case Update:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode Update to Delete");
            case Delete:
                if (editObj == null) {
                    editObj = (ICFBamUInt16ColEditObj) focus.beginEdit();
                    if (editObj == null) {
                        throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                                "Expected beginEdit() to return a new edition of the focus object");
                    }
                }
                break;
            default:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PaneMode " + oldValue + " to Delete");
            }
            editObj.delete();
            editObj.endEdit();
            setJavaFXFocus(null);
            setPaneMode(CFPane.PaneMode.Unknown);
            break;
        default:
            switch (oldValue) {
            case Unknown:
                break;
            default:
                if (editObj != null) {
                    editObj.endEdit();
                }
                break;
            }
            break;
        }
        super.setPaneMode(value);
        populateFields();
        adjustComponentEnableStates();
    }

    public void adjustComponentEnableStates() {
        CFPane.PaneMode mode = getPaneMode();
        boolean isEditing;
        switch (mode) {
        case Unknown:
        case View:
        case Delete:
            isEditing = false;
            break;
        case Add:
        case Edit:
        case Update:
            isEditing = true;
            break;
        default:
            isEditing = false;
            break;
        }
        if (isEditing) {
            ICFBamUInt16ColObj focus = getJavaFXFocusAsUInt16Col();
            if (focus == null) {
                isEditing = false;
            } else if (null == focus.getEdit()) {
                isEditing = false;
            }
        }
        if (javafxReferenceLookupDefSchema != null) {
            javafxReferenceLookupDefSchema.setCustomDisable(!isEditing);
        }
        if (javafxEditorId != null) {
            javafxEditorId.setDisable(true);
        }
        if (javafxEditorName != null) {
            javafxEditorName.setDisable(!isEditing);
        }
        if (javafxEditorShortName != null) {
            javafxEditorShortName.setDisable(!isEditing);
        }
        if (javafxEditorLabel != null) {
            javafxEditorLabel.setDisable(!isEditing);
        }
        if (javafxEditorShortDescription != null) {
            javafxEditorShortDescription.setDisable(!isEditing);
        }
        if (javafxEditorDescription != null) {
            javafxEditorDescription.setDisable(!isEditing);
        }
        if (javafxEditorIsNullable != null) {
            javafxEditorIsNullable.setDisable(!isEditing);
        }
        if (javafxEditorGenerateId != null) {
            javafxEditorGenerateId.setDisable(!isEditing);
        }
        if (javafxEditorDefaultVisibility != null) {
            javafxEditorDefaultVisibility.setDisable(!isEditing);
        }
        if (javafxEditorDbName != null) {
            javafxEditorDbName.setDisable(!isEditing);
        }
        if (javafxEditorInitValue != null) {
            javafxEditorInitValue.setDisable(!isEditing);
        }
        if (javafxEditorDefaultValue != null) {
            javafxEditorDefaultValue.setDisable(!isEditing);
        }
        if (javafxEditorMinValue != null) {
            javafxEditorMinValue.setDisable(!isEditing);
        }
        if (javafxEditorMaxValue != null) {
            javafxEditorMaxValue.setDisable(!isEditing);
        }
        if (javafxEditorNullValue != null) {
            javafxEditorNullValue.setDisable(!isEditing);
        }
        if (javafxEditorUnknownValue != null) {
            javafxEditorUnknownValue.setDisable(!isEditing);
        }
    }
}