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

Java tutorial

Introduction

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

Source

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

/*
 *   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.*;

/**
 *   CFBamJavaFXRelationColAttrPane JavaFX Attribute Pane implementation
 *   for RelationCol.
 */
public class CFBamJavaFXRelationColAttrPane extends CFGridPane implements ICFBamJavaFXRelationColPaneCommon {
    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) {
                ICFBamRelationColObj cur = getJavaFXFocusAsRelationCol();
                if (cur != null) {
                    ICFBamRelationColEditObj editObj = (ICFBamRelationColEditObj) 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();
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            ICFBamRelationColEditObj editObj = (ICFBamRelationColEditObj) 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";
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            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 LookupFromColCFLabel extends CFLabel {
        public LookupFromColCFLabel() {
            super();
            setText("From Column");
        }
    }

    protected class CallbackLookupFromColChosen implements ICFBamJavaFXIndexColChosen {
        public CallbackLookupFromColChosen() {
        }

        public void choseIndexCol(ICFBamIndexColObj value) {
            if (javafxReferenceLookupFromCol != null) {
                ICFBamRelationColObj cur = getJavaFXFocusAsRelationCol();
                if (cur != null) {
                    ICFBamRelationColEditObj editObj = (ICFBamRelationColEditObj) cur.getEdit();
                    if (null != editObj) {
                        CFPane.PaneMode curMode = getPaneMode();
                        if ((curMode == CFPane.PaneMode.Add) || (curMode == CFPane.PaneMode.Edit)) {
                            javafxReferenceLookupFromCol.setReferencedObject(value);
                            editObj.setRequiredLookupFromCol(value);
                        }
                    }
                }
            }
        }
    }

    protected class LookupFromColReferenceCallback implements ICFReferenceCallback {
        public void chose(ICFLibAnyObj value) {
            final String S_ProcName = "chose";
            Node cont;
            ICFBamSchemaObj schemaObj = (ICFBamSchemaObj) javafxSchema.getSchema();
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            ICFBamRelationColEditObj editObj = (ICFBamRelationColEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFBamIndexColObj referencedObj = (ICFBamIndexColObj) javafxReferenceLookupFromCol
                    .getReferencedObject();
            java.util.List<ICFBamIndexColObj> listOfIndexCol = null;
            ICFBamRelationObj refRelation = (ICFBamRelationObj) focus
                    .getRequiredContainerRelation(javafxIsInitializing);
            if (refRelation == null) {
                CFConsole.message("You must specify a Containing Relation before selecting a From Column");
                return;
            }
            ICFBamIndexObj refFromIndex = refRelation.getRequiredLookupFromIndex(javafxIsInitializing);
            if (refFromIndex == null) {
                CFConsole.message("You must specify a From Index before selecting a From Column");
                return;
            }
            listOfIndexCol = refFromIndex.getOptionalComponentsColumns(javafxIsInitializing);
            if (listOfIndexCol == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "listOfIndexCol");
            }
            Collection<ICFBamIndexColObj> cltn = listOfIndexCol;
            CFBorderPane form = javafxSchema.getIndexColFactory().newPickerForm(cfFormManager, referencedObj, null,
                    cltn, new CallbackLookupFromColChosen());
            ((ICFBamJavaFXIndexColPaneCommon) form).setPaneMode(CFPane.PaneMode.View);
            cfFormManager.pushForm(form);
        }

        public void view(ICFLibAnyObj value) {
            final String S_ProcName = "actionPerformed";
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            if (focus != null) {
                ICFBamIndexColObj referencedObj = (ICFBamIndexColObj) javafxReferenceLookupFromCol
                        .getReferencedObject();
                CFBorderPane form = null;
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("IDXC".equals(classCode)) {
                        form = javafxSchema.getIndexColFactory().newAddForm(cfFormManager, referencedObj, null,
                                true);
                        ICFBamJavaFXIndexColPaneCommon spec = (ICFBamJavaFXIndexColPaneCommon) form;
                        spec.setJavaFXFocus(referencedObj);
                        spec.setPaneMode(CFPane.PaneMode.View);
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "javaFXFocus", focus, "ICFBamIndexColObj");
                    }
                    cfFormManager.pushForm(form);
                }
            }
        }
    }

    protected class LookupFromColCFReferenceEditor extends CFReferenceEditor {
        public LookupFromColCFReferenceEditor() {
            super(new LookupFromColReferenceCallback());
            setFieldName("From Column");
        }
    }

    protected class LookupToColCFLabel extends CFLabel {
        public LookupToColCFLabel() {
            super();
            setText("To Column");
        }
    }

    protected class CallbackLookupToColChosen implements ICFBamJavaFXIndexColChosen {
        public CallbackLookupToColChosen() {
        }

        public void choseIndexCol(ICFBamIndexColObj value) {
            if (javafxReferenceLookupToCol != null) {
                ICFBamRelationColObj cur = getJavaFXFocusAsRelationCol();
                if (cur != null) {
                    ICFBamRelationColEditObj editObj = (ICFBamRelationColEditObj) cur.getEdit();
                    if (null != editObj) {
                        CFPane.PaneMode curMode = getPaneMode();
                        if ((curMode == CFPane.PaneMode.Add) || (curMode == CFPane.PaneMode.Edit)) {
                            javafxReferenceLookupToCol.setReferencedObject(value);
                            editObj.setRequiredLookupToCol(value);
                        }
                    }
                }
            }
        }
    }

    protected class LookupToColReferenceCallback implements ICFReferenceCallback {
        public void chose(ICFLibAnyObj value) {
            final String S_ProcName = "chose";
            Node cont;
            ICFBamSchemaObj schemaObj = (ICFBamSchemaObj) javafxSchema.getSchema();
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            ICFBamRelationColEditObj editObj = (ICFBamRelationColEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFBamIndexColObj referencedObj = (ICFBamIndexColObj) javafxReferenceLookupToCol.getReferencedObject();
            java.util.List<ICFBamIndexColObj> listOfIndexCol = null;
            ICFBamRelationObj refRelation = (ICFBamRelationObj) focus
                    .getRequiredContainerRelation(javafxIsInitializing);
            if (refRelation == null) {
                CFConsole.message("You must specify a Containing Relation before selecting a To Column");
                return;
            }
            ICFBamIndexObj refToIndex = refRelation.getRequiredLookupToIndex(javafxIsInitializing);
            if (refToIndex == null) {
                CFConsole.message("You must specify a To Index before selecting a To Column");
                return;
            }
            listOfIndexCol = refToIndex.getOptionalComponentsColumns(javafxIsInitializing);
            if (listOfIndexCol == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "listOfIndexCol");
            }
            Collection<ICFBamIndexColObj> cltn = listOfIndexCol;
            CFBorderPane form = javafxSchema.getIndexColFactory().newPickerForm(cfFormManager, referencedObj, null,
                    cltn, new CallbackLookupToColChosen());
            ((ICFBamJavaFXIndexColPaneCommon) form).setPaneMode(CFPane.PaneMode.View);
            cfFormManager.pushForm(form);
        }

        public void view(ICFLibAnyObj value) {
            final String S_ProcName = "actionPerformed";
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            if (focus != null) {
                ICFBamIndexColObj referencedObj = (ICFBamIndexColObj) javafxReferenceLookupToCol
                        .getReferencedObject();
                CFBorderPane form = null;
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("IDXC".equals(classCode)) {
                        form = javafxSchema.getIndexColFactory().newAddForm(cfFormManager, referencedObj, null,
                                true);
                        ICFBamJavaFXIndexColPaneCommon spec = (ICFBamJavaFXIndexColPaneCommon) form;
                        spec.setJavaFXFocus(referencedObj);
                        spec.setPaneMode(CFPane.PaneMode.View);
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "javaFXFocus", focus, "ICFBamIndexColObj");
                    }
                    cfFormManager.pushForm(form);
                }
            }
        }
    }

    protected class LookupToColCFReferenceEditor extends CFReferenceEditor {
        public LookupToColCFReferenceEditor() {
            super(new LookupToColReferenceCallback());
            setFieldName("To Column");
        }
    }

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

    protected class IdEditor extends CFInt64Editor {
        public IdEditor() {
            super();
            setMinValue(CFBamRelationColBuff.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 DefaultVisibilityCFLabel extends CFLabel {
        public DefaultVisibilityCFLabel() {
            super();
            setText("Default Visibility");
        }
    }

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

    protected ICFBamSchemaDefObj javafxLookupDefSchemaObj = null;
    protected DefSchemaCFLabel javafxLabelLookupDefSchema = null;
    protected DefSchemaCFReferenceEditor javafxReferenceLookupDefSchema = null;
    protected ICFBamIndexColObj javafxLookupFromColObj = null;
    protected LookupFromColCFLabel javafxLabelLookupFromCol = null;
    protected LookupFromColCFReferenceEditor javafxReferenceLookupFromCol = null;
    protected ICFBamIndexColObj javafxLookupToColObj = null;
    protected LookupToColCFLabel javafxLabelLookupToCol = null;
    protected LookupToColCFReferenceEditor javafxReferenceLookupToCol = 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 DefaultVisibilityCFLabel javafxLabelDefaultVisibility = null;
    protected DefaultVisibilityEditor javafxEditorDefaultVisibility = null;

    public CFBamJavaFXRelationColAttrPane(ICFFormManager formManager, ICFBamJavaFXSchema argSchema,
            ICFBamRelationColObj 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;
        setJavaFXFocusAsRelationCol(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 = getJavaFXLabelLookupFromCol();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

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

        gridRow++;

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

        reference = getJavaFXReferenceLookupToCol();
        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 = getJavaFXLabelDefaultVisibility();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

        ctrl = getJavaFXEditorDefaultVisibility();
        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 ICFBamRelationColObj)) {
            super.setJavaFXFocus(value);
        } else {
            throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(), S_ProcName, "value",
                    value, "ICFBamRelationColObj");
        }
        populateFields();
        adjustComponentEnableStates();
    }

    public ICFBamRelationColObj getJavaFXFocusAsRelationCol() {
        return ((ICFBamRelationColObj) getJavaFXFocus());
    }

    public void setJavaFXFocusAsRelationCol(ICFBamRelationColObj 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 ICFBamIndexColObj getJavaFXLookupFromColObj() {
        return (javafxLookupFromColObj);
    }

    public void setJavaFXLookupFromColObj(ICFBamIndexColObj value) {
        javafxLookupFromColObj = value;
    }

    public CFLabel getJavaFXLabelLookupFromCol() {
        if (javafxLabelLookupFromCol == null) {
            javafxLabelLookupFromCol = new LookupFromColCFLabel();
        }
        return (javafxLabelLookupFromCol);
    }

    public CFReferenceEditor getJavaFXReferenceLookupFromCol() {
        if (javafxReferenceLookupFromCol == null) {
            javafxReferenceLookupFromCol = new LookupFromColCFReferenceEditor();
        }
        return (javafxReferenceLookupFromCol);
    }

    public void setJavaFXReferenceLookupFromCol(LookupFromColCFReferenceEditor value) {
        javafxReferenceLookupFromCol = value;
    }

    public ICFBamIndexColObj getJavaFXLookupToColObj() {
        return (javafxLookupToColObj);
    }

    public void setJavaFXLookupToColObj(ICFBamIndexColObj value) {
        javafxLookupToColObj = value;
    }

    public CFLabel getJavaFXLabelLookupToCol() {
        if (javafxLabelLookupToCol == null) {
            javafxLabelLookupToCol = new LookupToColCFLabel();
        }
        return (javafxLabelLookupToCol);
    }

    public CFReferenceEditor getJavaFXReferenceLookupToCol() {
        if (javafxReferenceLookupToCol == null) {
            javafxReferenceLookupToCol = new LookupToColCFReferenceEditor();
        }
        return (javafxReferenceLookupToCol);
    }

    public void setJavaFXReferenceLookupToCol(LookupToColCFReferenceEditor value) {
        javafxReferenceLookupToCol = 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 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 void populateFields() {
        ICFBamRelationColObj popObj;
        ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
        if (focus != null) {
            popObj = (ICFBamRelationColObj) (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) {
            javafxLookupFromColObj = null;
        } else {
            javafxLookupFromColObj = (ICFBamIndexColObj) popObj.getRequiredLookupFromCol(javafxIsInitializing);
        }
        if (javafxReferenceLookupFromCol != null) {
            javafxReferenceLookupFromCol.setReferencedObject(javafxLookupFromColObj);
        }

        if (popObj == null) {
            javafxLookupToColObj = null;
        } else {
            javafxLookupToColObj = (ICFBamIndexColObj) popObj.getRequiredLookupToCol(javafxIsInitializing);
        }
        if (javafxReferenceLookupToCol != null) {
            javafxReferenceLookupToCol.setReferencedObject(javafxLookupToColObj);
        }

        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) {
            getJavaFXEditorDefaultVisibility().setBooleanValue(null);
        } else {
            getJavaFXEditorDefaultVisibility().setBooleanValue(popObj.getRequiredDefaultVisibility());
        }
    }

    public void postFields() {
        final String S_ProcName = "postFields";
        ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
        ICFBamRelationColEditObj editObj;
        if (focus != null) {
            editObj = (ICFBamRelationColEditObj) (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);

        javafxLookupFromColObj = (ICFBamIndexColObj) (javafxReferenceLookupFromCol.getReferencedObject());
        editObj.setRequiredLookupFromCol(javafxLookupFromColObj);

        javafxLookupToColObj = (ICFBamIndexColObj) (javafxReferenceLookupToCol.getReferencedObject());
        editObj.setRequiredLookupToCol(javafxLookupToColObj);

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

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

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

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

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

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

    public void setPaneMode(CFPane.PaneMode value) {
        final String S_ProcName = "setPaneMode";
        CFPane.PaneMode oldValue = getPaneMode();
        if (oldValue == value) {
            return;
        }
        ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
        if ((value != CFPane.PaneMode.Unknown) && (value != CFPane.PaneMode.View)) {
            if (focus == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "javaFXFocus");
            }
        }
        ICFBamRelationColEditObj editObj;
        if (focus != null) {
            editObj = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColObj) 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 = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColEditObj) 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 = (ICFBamRelationColEditObj) 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) {
            ICFBamRelationColObj focus = getJavaFXFocusAsRelationCol();
            if (focus == null) {
                isEditing = false;
            } else if (null == focus.getEdit()) {
                isEditing = false;
            }
        }
        if (javafxReferenceLookupDefSchema != null) {
            javafxReferenceLookupDefSchema.setCustomDisable(!isEditing);
        }
        if (javafxReferenceLookupFromCol != null) {
            javafxReferenceLookupFromCol.setCustomDisable(!isEditing);
        }
        if (javafxReferenceLookupToCol != null) {
            javafxReferenceLookupToCol.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 (javafxEditorDefaultVisibility != null) {
            javafxEditorDefaultVisibility.setDisable(!isEditing);
        }
    }
}