net.sourceforge.msscodefactory.cfacc.v2_0.CFAccSwing.CFAccSwingAccountConfigAttrJPanel.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.msscodefactory.cfacc.v2_0.CFAccSwing.CFAccSwingAccountConfigAttrJPanel.java

Source

// Description: Java 7 Swing Attribute JPanel implementation for AccountConfig.

/*
 *   MSS Code Factory Accounting Business Application Model
 *
 *   Copyright (c) 2014 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/>.
 *   
 *      This source code incorporates modified modules originally licensed
 *      under the Apache 2.0 license by MSS Code Factory including CFSecurity
 *      (net-sourceforge-msscodefactory-2.0-cfsecurity.xml),
 *      CFInternet (net-sourceforge-msscodefactory-2.0-cfinternet.xml), and
 *      CFCrm 2.0 (net-sourceforge-msscodefactory-2.0-cfcrm.xml), with all of the
 *      required models being available as part of the MSS Code Factory 1.11
 *      distribution source and install zips.
 *   
 *      You can download installations of MSS Code Factory 1.11 from
 *      http://msscodefactory.sourceforge.net/
 *   
 * ***********************************************************************
 *
 *   Code manufactured by MSS Code Factory
 */

package net.sourceforge.msscodefactory.cfacc.v2_0.CFAccSwing;

import java.math.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.sourceforge.msscodefactory.cflib.v1_11.CFLib.*;
import net.sourceforge.msscodefactory.cflib.v1_11.CFLib.Swing.*;
import org.apache.commons.codec.binary.Base64;
import net.sourceforge.msscodefactory.cfacc.v2_0.CFAcc.*;
import net.sourceforge.msscodefactory.cfacc.v2_0.CFAccObj.*;

/**
 *   CFAccSwingAccountConfigAttrJPanel Swing Attribute JPanel implementation
 *   for AccountConfig.
 */
public class CFAccSwingAccountConfigAttrJPanel extends CFJPanel implements ICFAccSwingAccountConfigJPanelCommon {
    protected ICFAccSwingSchema swingSchema = null;
    boolean swingIsInitializing = true;

    protected class TenantJLabel extends JLabel {
        public TenantJLabel() {
            super();
            setText("Tenant");
        }
    }

    protected class CallbackTenantChosen implements ICFAccSwingTenantChosen {
        public CallbackTenantChosen() {
        }

        public void choseTenant(ICFAccTenantObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceContainerTenant != null) {
                        ICFAccAccountConfigObj cur = getSwingFocusAsAccountConfig();
                        if (cur != null) {
                            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceContainerTenant.setReferencedObject(value);
                                    editObj.setRequiredContainerTenant(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    protected class ActionViewTenantReference extends AbstractAction {
        public ActionViewTenantReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            if (focus != null) {
                ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFAccTenantObj referencedObj = focus.getRequiredContainerTenant(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("TENT".equals(classCode)) {
                        frame = swingSchema.getTenantFactory().newViewEditJInternalFrame(referencedObj);
                        cont = getParent();
                        while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                            cont = cont.getParent();
                        }
                        if (cont != null) {
                            JInternalFrame myInternalFrame = (JInternalFrame) cont;
                            myInternalFrame.getDesktopPane().add(frame);
                            frame.setVisible(true);
                            frame.show();
                        }
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "swingFocus", focus, "ICFAccTenantObj");
                    }
                }
            }
        }
    }

    protected class ActionPickTenantReference extends AbstractAction {
        public ActionPickTenantReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFAccSchemaObj schemaObj = swingSchema.getSchema();
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFAccTenantObj referencedObj = focus.getRequiredContainerTenant(swingIsInitializing);
            SortedMap<CFAccTenantPKey, ICFAccTenantObj> mapOfTenant = null;
            CFAccAuthorization auth = schemaObj.getAuthorization();
            long containingClusterId = auth.getSecClusterId();
            mapOfTenant = schemaObj.getTenantTableObj().readTenantByClusterIdx(containingClusterId);
            if (mapOfTenant == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "mapOfTenant");
            }
            Collection<ICFAccTenantObj> cltn = mapOfTenant.values();
            JInternalFrame frame = swingSchema.getTenantFactory().newPickerJInternalFrame(referencedObj, null, cltn,
                    new CallbackTenantChosen());
            ((ICFAccSwingTenantJPanelCommon) frame).setPanelMode(CFJPanel.PanelMode.View);
            cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                JInternalFrame myInternalFrame = (JInternalFrame) cont;
                myInternalFrame.getDesktopPane().add(frame);
                frame.setVisible(true);
                frame.show();
            }
        }
    }

    protected class TenantCFJReferenceEditor extends CFJReferenceEditor {
        public TenantCFJReferenceEditor() {
            super(new ActionPickTenantReference(), new ActionViewTenantReference());
        }
    }

    protected class DefaultCurrencyJLabel extends JLabel {
        public DefaultCurrencyJLabel() {
            super();
            setText("Default Currency");
        }
    }

    protected class CallbackDefaultCurrencyChosen implements ICFAccSwingISOCurrencyChosen {
        public CallbackDefaultCurrencyChosen() {
        }

        public void choseISOCurrency(ICFAccISOCurrencyObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceLookupDefCcy != null) {
                        ICFAccAccountConfigObj cur = getSwingFocusAsAccountConfig();
                        if (cur != null) {
                            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceLookupDefCcy.setReferencedObject(value);
                                    editObj.setRequiredLookupDefCcy(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    protected class ActionViewDefaultCurrencyReference extends AbstractAction {
        public ActionViewDefaultCurrencyReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            if (focus != null) {
                ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFAccISOCurrencyObj referencedObj = focus.getRequiredLookupDefCcy(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("ISCY".equals(classCode)) {
                        frame = swingSchema.getISOCurrencyFactory().newViewEditJInternalFrame(referencedObj);
                        cont = getParent();
                        while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                            cont = cont.getParent();
                        }
                        if (cont != null) {
                            JInternalFrame myInternalFrame = (JInternalFrame) cont;
                            myInternalFrame.getDesktopPane().add(frame);
                            frame.setVisible(true);
                            frame.show();
                        }
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "swingFocus", focus, "ICFAccISOCurrencyObj");
                    }
                }
            }
        }
    }

    protected class ActionPickDefaultCurrencyReference extends AbstractAction {
        public ActionPickDefaultCurrencyReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFAccSchemaObj schemaObj = swingSchema.getSchema();
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFAccISOCurrencyObj referencedObj = focus.getRequiredLookupDefCcy(swingIsInitializing);
            SortedMap<CFAccISOCurrencyPKey, ICFAccISOCurrencyObj> mapOfISOCurrency = null;
            mapOfISOCurrency = schemaObj.getISOCurrencyTableObj().readAllISOCurrency();
            if (mapOfISOCurrency == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "mapOfISOCurrency");
            }
            Collection<ICFAccISOCurrencyObj> cltn = mapOfISOCurrency.values();
            JInternalFrame frame = swingSchema.getISOCurrencyFactory().newPickerJInternalFrame(referencedObj, null,
                    cltn, new CallbackDefaultCurrencyChosen());
            ((ICFAccSwingISOCurrencyJPanelCommon) frame).setPanelMode(CFJPanel.PanelMode.View);
            cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                JInternalFrame myInternalFrame = (JInternalFrame) cont;
                myInternalFrame.getDesktopPane().add(frame);
                frame.setVisible(true);
                frame.show();
            }
        }
    }

    protected class DefaultCurrencyCFJReferenceEditor extends CFJReferenceEditor {
        public DefaultCurrencyCFJReferenceEditor() {
            super(new ActionPickDefaultCurrencyReference(), new ActionViewDefaultCurrencyReference());
        }
    }

    protected class CustContactListJLabel extends JLabel {
        public CustContactListJLabel() {
            super();
            setText("Customer Contact List");
        }
    }

    protected class CallbackCustContactListChosen implements ICFAccSwingContactListChosen {
        public CallbackCustContactListChosen() {
        }

        public void choseContactList(ICFAccContactListObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceLookupCustCtcLst != null) {
                        ICFAccAccountConfigObj cur = getSwingFocusAsAccountConfig();
                        if (cur != null) {
                            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceLookupCustCtcLst.setReferencedObject(value);
                                    editObj.setOptionalLookupCustCtcLst(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    protected class ActionViewCustContactListReference extends AbstractAction {
        public ActionViewCustContactListReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            if (focus != null) {
                ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFAccContactListObj referencedObj = focus.getOptionalLookupCustCtcLst(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("CTL".equals(classCode)) {
                        frame = swingSchema.getContactListFactory().newViewEditJInternalFrame(referencedObj);
                        cont = getParent();
                        while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                            cont = cont.getParent();
                        }
                        if (cont != null) {
                            JInternalFrame myInternalFrame = (JInternalFrame) cont;
                            myInternalFrame.getDesktopPane().add(frame);
                            frame.setVisible(true);
                            frame.show();
                        }
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "swingFocus", focus, "ICFAccContactListObj");
                    }
                }
            }
        }
    }

    protected class ActionPickCustContactListReference extends AbstractAction {
        public ActionPickCustContactListReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFAccSchemaObj schemaObj = swingSchema.getSchema();
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFAccContactListObj referencedObj = focus.getOptionalLookupCustCtcLst(swingIsInitializing);
            SortedMap<CFAccContactListPKey, ICFAccContactListObj> mapOfContactList = null;
            ICFAccTenantObj refTenant = focus.getRequiredContainerTenant(swingIsInitializing);
            if (refTenant == null) {
                JOptionPane.showMessageDialog(null,
                        "You must specify a Tenant before selecting a Customer Contact List", "Warning",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }
            mapOfContactList = refTenant.getOptionalComponentsCtcList(swingIsInitializing);
            if (mapOfContactList == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "mapOfContactList");
            }
            Collection<ICFAccContactListObj> cltn = mapOfContactList.values();
            JInternalFrame frame = swingSchema.getContactListFactory().newPickerJInternalFrame(referencedObj, null,
                    cltn, new CallbackCustContactListChosen());
            ((ICFAccSwingContactListJPanelCommon) frame).setPanelMode(CFJPanel.PanelMode.View);
            cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                JInternalFrame myInternalFrame = (JInternalFrame) cont;
                myInternalFrame.getDesktopPane().add(frame);
                frame.setVisible(true);
                frame.show();
            }
        }
    }

    protected class CustContactListCFJReferenceEditor extends CFJReferenceEditor {
        public CustContactListCFJReferenceEditor() {
            super(new ActionPickCustContactListReference(), new ActionViewCustContactListReference());
        }
    }

    protected class EmpContactListJLabel extends JLabel {
        public EmpContactListJLabel() {
            super();
            setText("Employee Contact List");
        }
    }

    protected class CallbackEmpContactListChosen implements ICFAccSwingContactListChosen {
        public CallbackEmpContactListChosen() {
        }

        public void choseContactList(ICFAccContactListObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceLookupEmpCtcLst != null) {
                        ICFAccAccountConfigObj cur = getSwingFocusAsAccountConfig();
                        if (cur != null) {
                            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceLookupEmpCtcLst.setReferencedObject(value);
                                    editObj.setOptionalLookupEmpCtcLst(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    protected class ActionViewEmpContactListReference extends AbstractAction {
        public ActionViewEmpContactListReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            if (focus != null) {
                ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFAccContactListObj referencedObj = focus.getOptionalLookupEmpCtcLst(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("CTL".equals(classCode)) {
                        frame = swingSchema.getContactListFactory().newViewEditJInternalFrame(referencedObj);
                        cont = getParent();
                        while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                            cont = cont.getParent();
                        }
                        if (cont != null) {
                            JInternalFrame myInternalFrame = (JInternalFrame) cont;
                            myInternalFrame.getDesktopPane().add(frame);
                            frame.setVisible(true);
                            frame.show();
                        }
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "swingFocus", focus, "ICFAccContactListObj");
                    }
                }
            }
        }
    }

    protected class ActionPickEmpContactListReference extends AbstractAction {
        public ActionPickEmpContactListReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFAccSchemaObj schemaObj = swingSchema.getSchema();
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFAccContactListObj referencedObj = focus.getOptionalLookupEmpCtcLst(swingIsInitializing);
            SortedMap<CFAccContactListPKey, ICFAccContactListObj> mapOfContactList = null;
            ICFAccTenantObj refTenant = focus.getRequiredContainerTenant(swingIsInitializing);
            if (refTenant == null) {
                JOptionPane.showMessageDialog(null,
                        "You must specify a Tenant before selecting a Employee Contact List", "Warning",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }
            mapOfContactList = refTenant.getOptionalComponentsCtcList(swingIsInitializing);
            if (mapOfContactList == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "mapOfContactList");
            }
            Collection<ICFAccContactListObj> cltn = mapOfContactList.values();
            JInternalFrame frame = swingSchema.getContactListFactory().newPickerJInternalFrame(referencedObj, null,
                    cltn, new CallbackEmpContactListChosen());
            ((ICFAccSwingContactListJPanelCommon) frame).setPanelMode(CFJPanel.PanelMode.View);
            cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                JInternalFrame myInternalFrame = (JInternalFrame) cont;
                myInternalFrame.getDesktopPane().add(frame);
                frame.setVisible(true);
                frame.show();
            }
        }
    }

    protected class EmpContactListCFJReferenceEditor extends CFJReferenceEditor {
        public EmpContactListCFJReferenceEditor() {
            super(new ActionPickEmpContactListReference(), new ActionViewEmpContactListReference());
        }
    }

    protected class VendContactListJLabel extends JLabel {
        public VendContactListJLabel() {
            super();
            setText("Vendor Contact List");
        }
    }

    protected class CallbackVendContactListChosen implements ICFAccSwingContactListChosen {
        public CallbackVendContactListChosen() {
        }

        public void choseContactList(ICFAccContactListObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceLookupVendCtcLst != null) {
                        ICFAccAccountConfigObj cur = getSwingFocusAsAccountConfig();
                        if (cur != null) {
                            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceLookupVendCtcLst.setReferencedObject(value);
                                    editObj.setOptionalLookupVendCtcLst(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    protected class ActionViewVendContactListReference extends AbstractAction {
        public ActionViewVendContactListReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            if (focus != null) {
                ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFAccContactListObj referencedObj = focus.getOptionalLookupVendCtcLst(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("CTL".equals(classCode)) {
                        frame = swingSchema.getContactListFactory().newViewEditJInternalFrame(referencedObj);
                        cont = getParent();
                        while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                            cont = cont.getParent();
                        }
                        if (cont != null) {
                            JInternalFrame myInternalFrame = (JInternalFrame) cont;
                            myInternalFrame.getDesktopPane().add(frame);
                            frame.setVisible(true);
                            frame.show();
                        }
                    } else {
                        throw CFLib.getDefaultExceptionFactory().newUnsupportedClassException(getClass(),
                                S_ProcName, "swingFocus", focus, "ICFAccContactListObj");
                    }
                }
            }
        }
    }

    protected class ActionPickVendContactListReference extends AbstractAction {
        public ActionPickVendContactListReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFAccSchemaObj schemaObj = swingSchema.getSchema();
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            ICFAccAccountConfigEditObj editObj = (ICFAccAccountConfigEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFAccContactListObj referencedObj = focus.getOptionalLookupVendCtcLst(swingIsInitializing);
            SortedMap<CFAccContactListPKey, ICFAccContactListObj> mapOfContactList = null;
            ICFAccTenantObj refTenant = focus.getRequiredContainerTenant(swingIsInitializing);
            if (refTenant == null) {
                JOptionPane.showMessageDialog(null,
                        "You must specify a Tenant before selecting a Vendor Contact List", "Warning",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }
            mapOfContactList = refTenant.getOptionalComponentsCtcList(swingIsInitializing);
            if (mapOfContactList == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "mapOfContactList");
            }
            Collection<ICFAccContactListObj> cltn = mapOfContactList.values();
            JInternalFrame frame = swingSchema.getContactListFactory().newPickerJInternalFrame(referencedObj, null,
                    cltn, new CallbackVendContactListChosen());
            ((ICFAccSwingContactListJPanelCommon) frame).setPanelMode(CFJPanel.PanelMode.View);
            cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                JInternalFrame myInternalFrame = (JInternalFrame) cont;
                myInternalFrame.getDesktopPane().add(frame);
                frame.setVisible(true);
                frame.show();
            }
        }
    }

    protected class VendContactListCFJReferenceEditor extends CFJReferenceEditor {
        public VendContactListCFJReferenceEditor() {
            super(new ActionPickVendContactListReference(), new ActionViewVendContactListReference());
        }
    }

    protected ICFAccTenantObj swingContainerTenantObj = null;
    protected TenantJLabel swingLabelContainerTenant = null;
    protected TenantCFJReferenceEditor swingReferenceContainerTenant = null;
    protected ICFAccISOCurrencyObj swingLookupDefCcyObj = null;
    protected DefaultCurrencyJLabel swingLabelLookupDefCcy = null;
    protected DefaultCurrencyCFJReferenceEditor swingReferenceLookupDefCcy = null;
    protected ICFAccContactListObj swingLookupCustCtcLstObj = null;
    protected CustContactListJLabel swingLabelLookupCustCtcLst = null;
    protected CustContactListCFJReferenceEditor swingReferenceLookupCustCtcLst = null;
    protected ICFAccContactListObj swingLookupEmpCtcLstObj = null;
    protected EmpContactListJLabel swingLabelLookupEmpCtcLst = null;
    protected EmpContactListCFJReferenceEditor swingReferenceLookupEmpCtcLst = null;
    protected ICFAccContactListObj swingLookupVendCtcLstObj = null;
    protected VendContactListJLabel swingLabelLookupVendCtcLst = null;
    protected VendContactListCFJReferenceEditor swingReferenceLookupVendCtcLst = null;

    public CFAccSwingAccountConfigAttrJPanel(ICFAccSwingSchema argSchema, ICFAccAccountConfigObj argFocus) {
        super();
        JLabel label;
        JComponent compo;
        CFJReferenceEditor reference;
        final String S_ProcName = "construct-schema-focus";
        if (argSchema == null) {
            throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 1,
                    "argSchema");
        }
        // argFocus is optional; focus may be set later during execution as
        // conditions of the runtime change.
        swingSchema = argSchema;
        setSwingFocusAsAccountConfig(argFocus);
        final int spacing = 5;
        int y = spacing;
        final int height = 25;
        final int textheight = 80;
        final int vspacing = height + spacing;
        final int textvspacing = textheight + spacing;
        final int labelx = spacing;
        final int labelwidth = 200;
        final int fieldx = labelx + labelwidth + spacing;
        final int fieldwidth = 785;
        final int panelwidth = fieldx + fieldwidth + spacing;
        // temporary -- I think you have to have a panel bigger than the coordinates initially
        setSize(panelwidth, 100000);

        label = getSwingLabelContainerTenant();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceContainerTenant();
        add(reference);
        reference.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupDefCcy();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupDefCcy();
        add(reference);
        reference.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupCustCtcLst();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupCustCtcLst();
        add(reference);
        reference.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupEmpCtcLst();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupEmpCtcLst();
        add(reference);
        reference.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupVendCtcLst();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupVendCtcLst();
        add(reference);
        reference.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        // Now we can set the proper size based on the fields and references populated
        setSize(panelwidth, y);
        Dimension pfsz = new Dimension(panelwidth, y);
        setPreferredSize(pfsz);
        Dimension min = new Dimension(400, y);
        setMinimumSize(min);
        populateFields();
        adjustComponentEnableStates();
        swingIsInitializing = false;
    }

    public ICFAccSwingSchema getSwingSchema() {
        return (swingSchema);
    }

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

    public ICFAccAccountConfigObj getSwingFocusAsAccountConfig() {
        return ((ICFAccAccountConfigObj) getSwingFocus());
    }

    public void setSwingFocusAsAccountConfig(ICFAccAccountConfigObj value) {
        setSwingFocus(value);
    }

    public ICFAccTenantObj getSwingContainerTenantObj() {
        if (swingContainerTenantObj == null) {
        }
        return (swingContainerTenantObj);
    }

    public void setSwingContainerTenantObj(ICFAccTenantObj value) {
        swingContainerTenantObj = value;
    }

    public TenantJLabel getSwingLabelContainerTenant() {
        if (swingLabelContainerTenant == null) {
            swingLabelContainerTenant = new TenantJLabel();
        }
        return (swingLabelContainerTenant);
    }

    public TenantCFJReferenceEditor getSwingReferenceContainerTenant() {
        if (swingReferenceContainerTenant == null) {
            swingReferenceContainerTenant = new TenantCFJReferenceEditor();
        }
        return (swingReferenceContainerTenant);
    }

    public void setSwingReferenceContainerTenant(TenantCFJReferenceEditor value) {
        swingReferenceContainerTenant = value;
    }

    public ICFAccISOCurrencyObj getSwingLookupDefCcyObj() {
        return (swingLookupDefCcyObj);
    }

    public void setSwingLookupDefCcyObj(ICFAccISOCurrencyObj value) {
        swingLookupDefCcyObj = value;
    }

    public JLabel getSwingLabelLookupDefCcy() {
        if (swingLabelLookupDefCcy == null) {
            swingLabelLookupDefCcy = new DefaultCurrencyJLabel();
        }
        return (swingLabelLookupDefCcy);
    }

    public CFJReferenceEditor getSwingReferenceLookupDefCcy() {
        if (swingReferenceLookupDefCcy == null) {
            swingReferenceLookupDefCcy = new DefaultCurrencyCFJReferenceEditor();
        }
        return (swingReferenceLookupDefCcy);
    }

    public void setSwingReferenceLookupDefCcy(DefaultCurrencyCFJReferenceEditor value) {
        swingReferenceLookupDefCcy = value;
    }

    public ICFAccContactListObj getSwingLookupCustCtcLstObj() {
        return (swingLookupCustCtcLstObj);
    }

    public void setSwingLookupCustCtcLstObj(ICFAccContactListObj value) {
        swingLookupCustCtcLstObj = value;
    }

    public JLabel getSwingLabelLookupCustCtcLst() {
        if (swingLabelLookupCustCtcLst == null) {
            swingLabelLookupCustCtcLst = new CustContactListJLabel();
        }
        return (swingLabelLookupCustCtcLst);
    }

    public CFJReferenceEditor getSwingReferenceLookupCustCtcLst() {
        if (swingReferenceLookupCustCtcLst == null) {
            swingReferenceLookupCustCtcLst = new CustContactListCFJReferenceEditor();
        }
        return (swingReferenceLookupCustCtcLst);
    }

    public void setSwingReferenceLookupCustCtcLst(CustContactListCFJReferenceEditor value) {
        swingReferenceLookupCustCtcLst = value;
    }

    public ICFAccContactListObj getSwingLookupEmpCtcLstObj() {
        return (swingLookupEmpCtcLstObj);
    }

    public void setSwingLookupEmpCtcLstObj(ICFAccContactListObj value) {
        swingLookupEmpCtcLstObj = value;
    }

    public JLabel getSwingLabelLookupEmpCtcLst() {
        if (swingLabelLookupEmpCtcLst == null) {
            swingLabelLookupEmpCtcLst = new EmpContactListJLabel();
        }
        return (swingLabelLookupEmpCtcLst);
    }

    public CFJReferenceEditor getSwingReferenceLookupEmpCtcLst() {
        if (swingReferenceLookupEmpCtcLst == null) {
            swingReferenceLookupEmpCtcLst = new EmpContactListCFJReferenceEditor();
        }
        return (swingReferenceLookupEmpCtcLst);
    }

    public void setSwingReferenceLookupEmpCtcLst(EmpContactListCFJReferenceEditor value) {
        swingReferenceLookupEmpCtcLst = value;
    }

    public ICFAccContactListObj getSwingLookupVendCtcLstObj() {
        return (swingLookupVendCtcLstObj);
    }

    public void setSwingLookupVendCtcLstObj(ICFAccContactListObj value) {
        swingLookupVendCtcLstObj = value;
    }

    public JLabel getSwingLabelLookupVendCtcLst() {
        if (swingLabelLookupVendCtcLst == null) {
            swingLabelLookupVendCtcLst = new VendContactListJLabel();
        }
        return (swingLabelLookupVendCtcLst);
    }

    public CFJReferenceEditor getSwingReferenceLookupVendCtcLst() {
        if (swingReferenceLookupVendCtcLst == null) {
            swingReferenceLookupVendCtcLst = new VendContactListCFJReferenceEditor();
        }
        return (swingReferenceLookupVendCtcLst);
    }

    public void setSwingReferenceLookupVendCtcLst(VendContactListCFJReferenceEditor value) {
        swingReferenceLookupVendCtcLst = value;
    }

    public void doLayout() {
        JLabel label;
        JComponent compo;
        CFJReferenceEditor reference;
        Dimension dim;
        final int spacing = 5;
        int y = spacing;
        final int height = 25;
        final int textheight = 80;
        final int vspacing = height + spacing;
        final int textvspacing = textheight + spacing;
        final int labelx = spacing;
        final int labelwidth = 200;
        final int fieldx = labelx + labelwidth + spacing;
        final int fieldwidth = 1024;
        Dimension jpsz = getSize();
        int usefieldwidth = jpsz.width - 215;

        label = getSwingLabelContainerTenant();
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceContainerTenant();
        reference.setBounds(fieldx, y, usefieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupDefCcy();
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupDefCcy();
        reference.setBounds(fieldx, y, usefieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupCustCtcLst();
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupCustCtcLst();
        reference.setBounds(fieldx, y, usefieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupEmpCtcLst();
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupEmpCtcLst();
        reference.setBounds(fieldx, y, usefieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelLookupVendCtcLst();
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceLookupVendCtcLst();
        reference.setBounds(fieldx, y, usefieldwidth, height);
        y = y + vspacing;

    }

    public void populateFields() {
        ICFAccAccountConfigObj popObj;
        ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
        if (focus != null) {
            popObj = (ICFAccAccountConfigObj) (focus.getEdit());
            if (popObj == null) {
                popObj = focus;
            }
        } else {
            popObj = null;
        }
        if (getPanelMode() == CFJPanel.PanelMode.Unknown) {
            popObj = null;
        }
        if (popObj == null) {
            swingContainerTenantObj = null;
        } else {
            swingContainerTenantObj = popObj.getRequiredContainerTenant(swingIsInitializing);
        }
        if (swingReferenceContainerTenant != null) {
            swingReferenceContainerTenant.setReferencedObject(swingContainerTenantObj);
        }

        if (popObj == null) {
            swingLookupDefCcyObj = null;
        } else {
            swingLookupDefCcyObj = popObj.getRequiredLookupDefCcy(swingIsInitializing);
        }
        if (swingReferenceLookupDefCcy != null) {
            swingReferenceLookupDefCcy.setReferencedObject(swingLookupDefCcyObj);
        }

        if (popObj == null) {
            swingLookupCustCtcLstObj = null;
        } else {
            swingLookupCustCtcLstObj = popObj.getOptionalLookupCustCtcLst(swingIsInitializing);
        }
        if (swingReferenceLookupCustCtcLst != null) {
            swingReferenceLookupCustCtcLst.setReferencedObject(swingLookupCustCtcLstObj);
        }

        if (popObj == null) {
            swingLookupEmpCtcLstObj = null;
        } else {
            swingLookupEmpCtcLstObj = popObj.getOptionalLookupEmpCtcLst(swingIsInitializing);
        }
        if (swingReferenceLookupEmpCtcLst != null) {
            swingReferenceLookupEmpCtcLst.setReferencedObject(swingLookupEmpCtcLstObj);
        }

        if (popObj == null) {
            swingLookupVendCtcLstObj = null;
        } else {
            swingLookupVendCtcLstObj = popObj.getOptionalLookupVendCtcLst(swingIsInitializing);
        }
        if (swingReferenceLookupVendCtcLst != null) {
            swingReferenceLookupVendCtcLst.setReferencedObject(swingLookupVendCtcLstObj);
        }
    }

    public void postFields() {
        final String S_ProcName = "postFields";
        ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
        ICFAccAccountConfigEditObj editObj;
        if (focus != null) {
            editObj = (ICFAccAccountConfigEditObj) (focus.getEdit());
        } else {
            editObj = null;
        }
        if (editObj == null) {
            throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                    "Panel is unfocused or is not editing the focus object");
        }
        // You are not allowed to edit the Container or Owner references, so they're not retrieved

        swingLookupDefCcyObj = (ICFAccISOCurrencyObj) (swingReferenceLookupDefCcy.getReferencedObject());
        editObj.setRequiredLookupDefCcy(swingLookupDefCcyObj);

        swingLookupCustCtcLstObj = (ICFAccContactListObj) (swingReferenceLookupCustCtcLst.getReferencedObject());
        editObj.setOptionalLookupCustCtcLst(swingLookupCustCtcLstObj);

        swingLookupEmpCtcLstObj = (ICFAccContactListObj) (swingReferenceLookupEmpCtcLst.getReferencedObject());
        editObj.setOptionalLookupEmpCtcLst(swingLookupEmpCtcLstObj);

        swingLookupVendCtcLstObj = (ICFAccContactListObj) (swingReferenceLookupVendCtcLst.getReferencedObject());
        editObj.setOptionalLookupVendCtcLst(swingLookupVendCtcLstObj);
    }

    public void setPanelMode(CFJPanel.PanelMode value) {
        final String S_ProcName = "setPanelMode";
        CFJPanel.PanelMode oldValue = getPanelMode();
        if (oldValue == value) {
            return;
        }
        ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
        if ((value != CFJPanel.PanelMode.Unknown) && (value != CFJPanel.PanelMode.View)) {
            if (focus == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "swingFocus");
            }
        }
        ICFAccAccountConfigEditObj editObj;
        if (focus != null) {
            editObj = (ICFAccAccountConfigEditObj) 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 PanelMode Add requires Focus.getIsNew() to be true");
                        }
                        editObj = (ICFAccAccountConfigEditObj) 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 PanelMode Edit to Add");
            case Update:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PanelMode Update to Add");
            case Delete:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PanelMode Delete to Add");
            default:
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition PanelMode 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 PanelMode " + oldValue + " to View");
            }
            if (editObj != null) {
                editObj.endEdit();
            }
            break;
        case Edit:
            switch (oldValue) {
            case Unknown:
                if (editObj == null) {
                    editObj = (ICFAccAccountConfigEditObj) 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 = (ICFAccAccountConfigEditObj) 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 = (ICFAccAccountConfigEditObj) 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 PanelMode " + oldValue + " to Edit");
            }
            break;
        case Update:
            if ((oldValue != CFJPanel.PanelMode.Edit) && (oldValue != CFJPanel.PanelMode.Add)) {
                throw CFLib.getDefaultExceptionFactory().newUsageException(getClass(), S_ProcName,
                        "Cannot transition from mode " + oldValue + " to Update");
            }
            super.setPanelMode(value);
            if (editObj != null) {
                postFields();
                if (editObj.getIsNew()) {
                    focus = (ICFAccAccountConfigObj) editObj.create();
                    setSwingFocus(focus);
                } else {
                    editObj.update();
                }
                editObj.endEdit();
                editObj = null;
            }
            setPanelMode(CFJPanel.PanelMode.View);
            break;
        case Delete:
            switch (oldValue) {
            case View:
                if (focus != null) {
                    if (editObj == null) {
                        editObj = (ICFAccAccountConfigEditObj) 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 = (ICFAccAccountConfigEditObj) 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 PanelMode Update to Delete");
            case Delete:
                if (editObj == null) {
                    editObj = (ICFAccAccountConfigEditObj) 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 PanelMode " + oldValue + " to Delete");
            }
            editObj.delete();
            editObj.endEdit();
            setSwingFocus(null);
            setPanelMode(CFJPanel.PanelMode.Unknown);
            break;
        default:
            switch (oldValue) {
            case Unknown:
                break;
            default:
                if (editObj != null) {
                    editObj.endEdit();
                }
                break;
            }
            break;
        }
        super.setPanelMode(value);
        populateFields();
        adjustComponentEnableStates();
    }

    public void adjustComponentEnableStates() {
        CFJPanel.PanelMode mode = getPanelMode();
        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) {
            ICFAccAccountConfigObj focus = getSwingFocusAsAccountConfig();
            if (focus == null) {
                isEditing = false;
            } else if (null == focus.getEdit()) {
                isEditing = false;
            }
        }
        if (swingReferenceContainerTenant != null) {
            swingReferenceContainerTenant.setEnabled(false);
        }
        if (swingReferenceLookupDefCcy != null) {
            swingReferenceLookupDefCcy.setEnabled(isEditing);
        }
        if (swingReferenceLookupCustCtcLst != null) {
            swingReferenceLookupCustCtcLst.setEnabled(isEditing);
        }
        if (swingReferenceLookupEmpCtcLst != null) {
            swingReferenceLookupEmpCtcLst.setEnabled(isEditing);
        }
        if (swingReferenceLookupVendCtcLst != null) {
            swingReferenceLookupVendCtcLst.setEnabled(isEditing);
        }
    }
}