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

Java tutorial

Introduction

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

Source

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

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

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

    protected class RelationCFLabel extends CFLabel {
        public RelationCFLabel() {
            super();
            setText("Relation");
        }
    }

    protected class CallbackRelationChosen implements ICFBamJavaFXRelationChosen {
        public CallbackRelationChosen() {
        }

        public void choseRelation(ICFBamRelationObj value) {
            if (javafxReferenceLookupRelation != null) {
                ICFBamDelTopDepObj cur = getJavaFXFocusAsDelTopDep();
                if (cur != null) {
                    ICFBamDelTopDepEditObj editObj = (ICFBamDelTopDepEditObj) cur.getEdit();
                    if (null != editObj) {
                        CFPane.PaneMode curMode = getPaneMode();
                        if ((curMode == CFPane.PaneMode.Add) || (curMode == CFPane.PaneMode.Edit)) {
                            javafxReferenceLookupRelation.setReferencedObject(value);
                            editObj.setRequiredLookupRelation(value);
                        }
                    }
                }
            }
        }
    }

    protected class RelationReferenceCallback implements ICFReferenceCallback {
        public void chose(ICFLibAnyObj value) {
            final String S_ProcName = "chose";
            Node cont;
            ICFBamSchemaObj schemaObj = (ICFBamSchemaObj) javafxSchema.getSchema();
            ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
            ICFBamDelTopDepEditObj editObj = (ICFBamDelTopDepEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFBamRelationObj referencedObj = (ICFBamRelationObj) javafxReferenceLookupRelation
                    .getReferencedObject();
            java.util.List<ICFBamRelationObj> listOfRelation = null;
            Collection<ICFBamRelationObj> cltn = null;
            CFBorderPane form = javafxSchema.getRelationFactory().newPickerForm(cfFormManager, referencedObj, null,
                    cltn, new CallbackRelationChosen());
            ((ICFBamJavaFXRelationPaneCommon) form).setPaneMode(CFPane.PaneMode.View);
            cfFormManager.pushForm(form);
        }

        public void view(ICFLibAnyObj value) {
            final String S_ProcName = "actionPerformed";
            ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
            if (focus != null) {
                ICFBamRelationObj referencedObj = (ICFBamRelationObj) javafxReferenceLookupRelation
                        .getReferencedObject();
                CFBorderPane form = null;
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("RELD".equals(classCode)) {
                        form = javafxSchema.getRelationFactory().newAddForm(cfFormManager, referencedObj, null,
                                true);
                        ICFBamJavaFXRelationPaneCommon spec = (ICFBamJavaFXRelationPaneCommon) form;
                        spec.setJavaFXFocus(referencedObj);
                        spec.setPaneMode(CFPane.PaneMode.View);
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "javaFXFocus", focus, "ICFBamRelationObj");
                    }
                    cfFormManager.pushForm(form);
                }
            }
        }
    }

    protected class RelationCFReferenceEditor extends CFReferenceEditor {
        public RelationCFReferenceEditor() {
            super(new RelationReferenceCallback());
            setFieldName("Relation");
        }
    }

    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) {
                ICFBamDelTopDepObj cur = getJavaFXFocusAsDelTopDep();
                if (cur != null) {
                    ICFBamDelTopDepEditObj editObj = (ICFBamDelTopDepEditObj) 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();
            ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
            ICFBamDelTopDepEditObj editObj = (ICFBamDelTopDepEditObj) 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";
            ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
            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(CFBamScopeBuff.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 ICFBamRelationObj javafxLookupRelationObj = null;
    protected RelationCFLabel javafxLabelLookupRelation = null;
    protected RelationCFReferenceEditor javafxReferenceLookupRelation = null;
    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;

    public CFBamJavaFXDelTopDepAttrPane(ICFFormManager formManager, ICFBamJavaFXSchema argSchema,
            ICFBamDelTopDepObj 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;
        setJavaFXFocusAsDelTopDep(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 = getJavaFXLabelLookupRelation();
        setHalignment(label, HPos.LEFT);
        add(label, 0, gridRow);

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

        gridRow++;

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

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

    public ICFBamDelTopDepObj getJavaFXFocusAsDelTopDep() {
        return ((ICFBamDelTopDepObj) getJavaFXFocus());
    }

    public void setJavaFXFocusAsDelTopDep(ICFBamDelTopDepObj value) {
        setJavaFXFocus(value);
    }

    public ICFBamRelationObj getJavaFXLookupRelationObj() {
        return (javafxLookupRelationObj);
    }

    public void setJavaFXLookupRelationObj(ICFBamRelationObj value) {
        javafxLookupRelationObj = value;
    }

    public CFLabel getJavaFXLabelLookupRelation() {
        if (javafxLabelLookupRelation == null) {
            javafxLabelLookupRelation = new RelationCFLabel();
        }
        return (javafxLabelLookupRelation);
    }

    public CFReferenceEditor getJavaFXReferenceLookupRelation() {
        if (javafxReferenceLookupRelation == null) {
            javafxReferenceLookupRelation = new RelationCFReferenceEditor();
        }
        return (javafxReferenceLookupRelation);
    }

    public void setJavaFXReferenceLookupRelation(RelationCFReferenceEditor value) {
        javafxReferenceLookupRelation = 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 void populateFields() {
        ICFBamDelTopDepObj popObj;
        ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
        if (focus != null) {
            popObj = (ICFBamDelTopDepObj) (focus.getEdit());
            if (popObj == null) {
                popObj = focus;
            }
        } else {
            popObj = null;
        }
        if (getPaneMode() == CFPane.PaneMode.Unknown) {
            popObj = null;
        }
        if (popObj == null) {
            javafxLookupRelationObj = null;
        } else {
            javafxLookupRelationObj = (ICFBamRelationObj) popObj.getRequiredLookupRelation(javafxIsInitializing);
        }
        if (javafxReferenceLookupRelation != null) {
            javafxReferenceLookupRelation.setReferencedObject(javafxLookupRelationObj);
        }

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

    public void postFields() {
        final String S_ProcName = "postFields";
        ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
        ICFBamDelTopDepEditObj editObj;
        if (focus != null) {
            editObj = (ICFBamDelTopDepEditObj) (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");
        }

        javafxLookupRelationObj = (ICFBamRelationObj) (javafxReferenceLookupRelation.getReferencedObject());
        editObj.setRequiredLookupRelation(javafxLookupRelationObj);

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

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

    public void setPaneMode(CFPane.PaneMode value) {
        final String S_ProcName = "setPaneMode";
        CFPane.PaneMode oldValue = getPaneMode();
        if (oldValue == value) {
            return;
        }
        ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
        if ((value != CFPane.PaneMode.Unknown) && (value != CFPane.PaneMode.View)) {
            if (focus == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "javaFXFocus");
            }
        }
        ICFBamDelTopDepEditObj editObj;
        if (focus != null) {
            editObj = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepObj) 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 = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepEditObj) 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 = (ICFBamDelTopDepEditObj) 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) {
            ICFBamDelTopDepObj focus = getJavaFXFocusAsDelTopDep();
            if (focus == null) {
                isEditing = false;
            } else if (null == focus.getEdit()) {
                isEditing = false;
            }
        }
        if (javafxReferenceLookupRelation != null) {
            javafxReferenceLookupRelation.setCustomDisable(!isEditing);
        }
        if (javafxReferenceLookupDefSchema != null) {
            javafxReferenceLookupDefSchema.setCustomDisable(!isEditing);
        }
        if (javafxEditorId != null) {
            javafxEditorId.setDisable(true);
        }
        if (javafxEditorName != null) {
            javafxEditorName.setDisable(!isEditing);
        }
    }
}