net.sourceforge.msscodefactory.cffreeswitch.v2_4.CFFreeSwitchSwing.CFFreeSwitchSwingPbxIvrMenuAttrJPanel.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.msscodefactory.cffreeswitch.v2_4.CFFreeSwitchSwing.CFFreeSwitchSwingPbxIvrMenuAttrJPanel.java

Source

// Description: Java 8 Swing Attribute JPanel implementation for PbxIvrMenu.

/*
 *   CF FreeSwitch Configuration Model
 *
 *   Copyright (c) 2014-2015 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.cffreeswitch.v2_4.CFFreeSwitchSwing;

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.v2_3.CFLib.*;
import net.sourceforge.msscodefactory.cflib.v2_3.CFLib.Swing.*;
import org.apache.commons.codec.binary.Base64;
import net.sourceforge.msscodefactory.cfsecurity.v2_4.CFSecurity.*;
import net.sourceforge.msscodefactory.cfinternet.v2_4.CFInternet.*;
import net.sourceforge.msscodefactory.cffreeswitch.v2_4.CFFreeSwitch.*;
import net.sourceforge.msscodefactory.cfsecurity.v2_4.CFSecurityObj.*;
import net.sourceforge.msscodefactory.cfinternet.v2_4.CFInternetObj.*;
import net.sourceforge.msscodefactory.cffreeswitch.v2_4.CFFreeSwitchObj.*;

/**
 *   CFFreeSwitchSwingPbxIvrMenuAttrJPanel Swing Attribute JPanel implementation
 *   for PbxIvrMenu.
 */
public class CFFreeSwitchSwingPbxIvrMenuAttrJPanel extends CFJPanel
        implements ICFFreeSwitchSwingPbxIvrMenuJPanelCommon {
    protected ICFFreeSwitchSwingSchema swingSchema = null;
    boolean swingIsInitializing = true;

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

    protected class CallbackPbxIvrMenuTenantChosen implements ICFFreeSwitchSwingTenantChosen {
        public CallbackPbxIvrMenuTenantChosen() {
        }

        public void choseTenant(ICFSecurityTenantObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceContainerTenant != null) {
                        ICFFreeSwitchPbxIvrMenuObj cur = getSwingFocusAsPbxIvrMenu();
                        if (cur != null) {
                            ICFFreeSwitchPbxIvrMenuEditObj editObj = (ICFFreeSwitchPbxIvrMenuEditObj) 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 ActionViewPbxIvrMenuTenantReference extends AbstractAction {
        public ActionViewPbxIvrMenuTenantReference() {
            super();
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFFreeSwitchPbxIvrMenuObj focus = getSwingFocusAsPbxIvrMenu();
            if (focus != null) {
                ICFFreeSwitchPbxIvrMenuEditObj editObj = (ICFFreeSwitchPbxIvrMenuEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFFreeSwitchTenantObj referencedObj = (ICFFreeSwitchTenantObj) 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, "ICFFreeSwitchTenantObj");
                    }
                }
            }
        }
    }

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

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFFreeSwitchSchemaObj schemaObj = swingSchema.getSchema();
            ICFFreeSwitchPbxIvrMenuObj focus = getSwingFocusAsPbxIvrMenu();
            ICFFreeSwitchPbxIvrMenuEditObj editObj = (ICFFreeSwitchPbxIvrMenuEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFFreeSwitchTenantObj referencedObj = (ICFFreeSwitchTenantObj) focus
                    .getRequiredContainerTenant(swingIsInitializing);
            java.util.List<ICFSecurityTenantObj> listOfTenant = null;
            CFSecurityAuthorization auth = schemaObj.getAuthorization();
            long containingClusterId = auth.getSecClusterId();
            listOfTenant = schemaObj.getTenantTableObj().readTenantByClusterIdx(containingClusterId);
            if (listOfTenant == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "listOfTenant");
            }
            Collection<ICFSecurityTenantObj> cltn = listOfTenant;
            JInternalFrame frame = swingSchema.getTenantFactory().newPickerJInternalFrame(referencedObj, null, cltn,
                    new CallbackPbxIvrMenuTenantChosen());
            ((ICFFreeSwitchSwingTenantJPanelCommon) 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 PbxIvrMenuTenantCFJReferenceEditor extends CFJReferenceEditor {
        public PbxIvrMenuTenantCFJReferenceEditor() {
            super(new ActionPickPbxIvrMenuTenantReference(), new ActionViewPbxIvrMenuTenantReference());
        }
    }

    protected class MenuIdJLabel extends JLabel {
        public MenuIdJLabel() {
            super();
            setText("Menu Id");
        }
    }

    protected class MenuIdJEditor extends CFJInt64Editor {
        public MenuIdJEditor() {
            super();
            setMinValue(0L);
        }
    }

    protected class NameJLabel extends JLabel {
        public NameJLabel() {
            super();
            setText("Name");
        }
    }

    protected class NameJEditor extends CFJStringEditor {
        public NameJEditor() {
            super();
            setMaxLen(64);
        }
    }

    protected class GreetLongJLabel extends JLabel {
        public GreetLongJLabel() {
            super();
            setText("Long Greeting");
        }
    }

    protected class GreetLongJEditor extends CFJStringEditor {
        public GreetLongJEditor() {
            super();
            setMaxLen(2048);
        }
    }

    protected class GreetShortJLabel extends JLabel {
        public GreetShortJLabel() {
            super();
            setText("Short Greeting");
        }
    }

    protected class GreetShortJEditor extends CFJStringEditor {
        public GreetShortJEditor() {
            super();
            setMaxLen(2048);
        }
    }

    protected class InvalidSoundJLabel extends JLabel {
        public InvalidSoundJLabel() {
            super();
            setText("Invalid Sound");
        }
    }

    protected class InvalidSoundJEditor extends CFJStringEditor {
        public InvalidSoundJEditor() {
            super();
            setMaxLen(2048);
        }
    }

    protected class ExitSoundJLabel extends JLabel {
        public ExitSoundJLabel() {
            super();
            setText("Exit Sound");
        }
    }

    protected class ExitSoundJEditor extends CFJStringEditor {
        public ExitSoundJEditor() {
            super();
            setMaxLen(2048);
        }
    }

    protected class TimeoutJLabel extends JLabel {
        public TimeoutJLabel() {
            super();
            setText("Timeout");
        }
    }

    protected class TimeoutJEditor extends CFJInt32Editor {
        public TimeoutJEditor() {
            super();
        }
    }

    protected class InterDigitTimeoutJLabel extends JLabel {
        public InterDigitTimeoutJLabel() {
            super();
            setText("Inter-Digit Timeout");
        }
    }

    protected class InterDigitTimeoutJEditor extends CFJInt32Editor {
        public InterDigitTimeoutJEditor() {
            super();
        }
    }

    protected class MaxFailuresJLabel extends JLabel {
        public MaxFailuresJLabel() {
            super();
            setText("Maximum Failures");
        }
    }

    protected class MaxFailuresJEditor extends CFJInt32Editor {
        public MaxFailuresJEditor() {
            super();
        }
    }

    protected class MaxTimeoutsJLabel extends JLabel {
        public MaxTimeoutsJLabel() {
            super();
            setText("Maximum Timeouts");
        }
    }

    protected class MaxTimeoutsJEditor extends CFJInt32Editor {
        public MaxTimeoutsJEditor() {
            super();
        }
    }

    protected class DigitLenJLabel extends JLabel {
        public DigitLenJLabel() {
            super();
            setText("Digit Length");
        }
    }

    protected class DigitLenJEditor extends CFJInt32Editor {
        public DigitLenJEditor() {
            super();
        }
    }

    protected ICFFreeSwitchTenantObj swingContainerTenantObj = null;
    protected PbxIvrMenuTenantJLabel swingLabelContainerTenant = null;
    protected PbxIvrMenuTenantCFJReferenceEditor swingReferenceContainerTenant = null;
    protected MenuIdJLabel swingLabelMenuId = null;
    protected MenuIdJEditor swingEditorMenuId = null;
    protected NameJLabel swingLabelName = null;
    protected NameJEditor swingEditorName = null;
    protected GreetLongJLabel swingLabelGreetLong = null;
    protected GreetLongJEditor swingEditorGreetLong = null;
    protected GreetShortJLabel swingLabelGreetShort = null;
    protected GreetShortJEditor swingEditorGreetShort = null;
    protected InvalidSoundJLabel swingLabelInvalidSound = null;
    protected InvalidSoundJEditor swingEditorInvalidSound = null;
    protected ExitSoundJLabel swingLabelExitSound = null;
    protected ExitSoundJEditor swingEditorExitSound = null;
    protected TimeoutJLabel swingLabelTimeout = null;
    protected TimeoutJEditor swingEditorTimeout = null;
    protected InterDigitTimeoutJLabel swingLabelInterDigitTimeout = null;
    protected InterDigitTimeoutJEditor swingEditorInterDigitTimeout = null;
    protected MaxFailuresJLabel swingLabelMaxFailures = null;
    protected MaxFailuresJEditor swingEditorMaxFailures = null;
    protected MaxTimeoutsJLabel swingLabelMaxTimeouts = null;
    protected MaxTimeoutsJEditor swingEditorMaxTimeouts = null;
    protected DigitLenJLabel swingLabelDigitLen = null;
    protected DigitLenJEditor swingEditorDigitLen = null;

    public CFFreeSwitchSwingPbxIvrMenuAttrJPanel(ICFFreeSwitchSwingSchema argSchema,
            ICFFreeSwitchPbxIvrMenuObj 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;
        setSwingFocusAsPbxIvrMenu(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 = getSwingLabelMenuId();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorMenuId();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelName();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorName();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelGreetLong();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorGreetLong();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelGreetShort();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorGreetShort();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelInvalidSound();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorInvalidSound();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelExitSound();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorExitSound();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelTimeout();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorTimeout();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelInterDigitTimeout();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorInterDigitTimeout();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelMaxFailures();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorMaxFailures();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelMaxTimeouts();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorMaxTimeouts();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

        label = getSwingLabelDigitLen();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorDigitLen();
        add(compo);
        compo.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 ICFFreeSwitchSwingSchema getSwingSchema() {
        return (swingSchema);
    }

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

    public ICFFreeSwitchPbxIvrMenuObj getSwingFocusAsPbxIvrMenu() {
        return ((ICFFreeSwitchPbxIvrMenuObj) getSwingFocus());
    }

    public void setSwingFocusAsPbxIvrMenu(ICFFreeSwitchPbxIvrMenuObj value) {
        setSwingFocus(value);
    }

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

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

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

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

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

    public MenuIdJLabel getSwingLabelMenuId() {
        if (swingLabelMenuId == null) {
            swingLabelMenuId = new MenuIdJLabel();
        }
        return (swingLabelMenuId);
    }

    public void setSwingLabelMenuId(MenuIdJLabel value) {
        swingLabelMenuId = value;
    }

    public MenuIdJEditor getSwingEditorMenuId() {
        if (swingEditorMenuId == null) {
            swingEditorMenuId = new MenuIdJEditor();
        }
        return (swingEditorMenuId);
    }

    public void setSwingEditorMenuId(MenuIdJEditor value) {
        swingEditorMenuId = value;
    }

    public NameJLabel getSwingLabelName() {
        if (swingLabelName == null) {
            swingLabelName = new NameJLabel();
        }
        return (swingLabelName);
    }

    public void setSwingLabelName(NameJLabel value) {
        swingLabelName = value;
    }

    public NameJEditor getSwingEditorName() {
        if (swingEditorName == null) {
            swingEditorName = new NameJEditor();
        }
        return (swingEditorName);
    }

    public void setSwingEditorName(NameJEditor value) {
        swingEditorName = value;
    }

    public GreetLongJLabel getSwingLabelGreetLong() {
        if (swingLabelGreetLong == null) {
            swingLabelGreetLong = new GreetLongJLabel();
        }
        return (swingLabelGreetLong);
    }

    public void setSwingLabelGreetLong(GreetLongJLabel value) {
        swingLabelGreetLong = value;
    }

    public GreetLongJEditor getSwingEditorGreetLong() {
        if (swingEditorGreetLong == null) {
            swingEditorGreetLong = new GreetLongJEditor();
        }
        return (swingEditorGreetLong);
    }

    public void setSwingEditorGreetLong(GreetLongJEditor value) {
        swingEditorGreetLong = value;
    }

    public GreetShortJLabel getSwingLabelGreetShort() {
        if (swingLabelGreetShort == null) {
            swingLabelGreetShort = new GreetShortJLabel();
        }
        return (swingLabelGreetShort);
    }

    public void setSwingLabelGreetShort(GreetShortJLabel value) {
        swingLabelGreetShort = value;
    }

    public GreetShortJEditor getSwingEditorGreetShort() {
        if (swingEditorGreetShort == null) {
            swingEditorGreetShort = new GreetShortJEditor();
        }
        return (swingEditorGreetShort);
    }

    public void setSwingEditorGreetShort(GreetShortJEditor value) {
        swingEditorGreetShort = value;
    }

    public InvalidSoundJLabel getSwingLabelInvalidSound() {
        if (swingLabelInvalidSound == null) {
            swingLabelInvalidSound = new InvalidSoundJLabel();
        }
        return (swingLabelInvalidSound);
    }

    public void setSwingLabelInvalidSound(InvalidSoundJLabel value) {
        swingLabelInvalidSound = value;
    }

    public InvalidSoundJEditor getSwingEditorInvalidSound() {
        if (swingEditorInvalidSound == null) {
            swingEditorInvalidSound = new InvalidSoundJEditor();
        }
        return (swingEditorInvalidSound);
    }

    public void setSwingEditorInvalidSound(InvalidSoundJEditor value) {
        swingEditorInvalidSound = value;
    }

    public ExitSoundJLabel getSwingLabelExitSound() {
        if (swingLabelExitSound == null) {
            swingLabelExitSound = new ExitSoundJLabel();
        }
        return (swingLabelExitSound);
    }

    public void setSwingLabelExitSound(ExitSoundJLabel value) {
        swingLabelExitSound = value;
    }

    public ExitSoundJEditor getSwingEditorExitSound() {
        if (swingEditorExitSound == null) {
            swingEditorExitSound = new ExitSoundJEditor();
        }
        return (swingEditorExitSound);
    }

    public void setSwingEditorExitSound(ExitSoundJEditor value) {
        swingEditorExitSound = value;
    }

    public TimeoutJLabel getSwingLabelTimeout() {
        if (swingLabelTimeout == null) {
            swingLabelTimeout = new TimeoutJLabel();
        }
        return (swingLabelTimeout);
    }

    public void setSwingLabelTimeout(TimeoutJLabel value) {
        swingLabelTimeout = value;
    }

    public TimeoutJEditor getSwingEditorTimeout() {
        if (swingEditorTimeout == null) {
            swingEditorTimeout = new TimeoutJEditor();
        }
        return (swingEditorTimeout);
    }

    public void setSwingEditorTimeout(TimeoutJEditor value) {
        swingEditorTimeout = value;
    }

    public InterDigitTimeoutJLabel getSwingLabelInterDigitTimeout() {
        if (swingLabelInterDigitTimeout == null) {
            swingLabelInterDigitTimeout = new InterDigitTimeoutJLabel();
        }
        return (swingLabelInterDigitTimeout);
    }

    public void setSwingLabelInterDigitTimeout(InterDigitTimeoutJLabel value) {
        swingLabelInterDigitTimeout = value;
    }

    public InterDigitTimeoutJEditor getSwingEditorInterDigitTimeout() {
        if (swingEditorInterDigitTimeout == null) {
            swingEditorInterDigitTimeout = new InterDigitTimeoutJEditor();
        }
        return (swingEditorInterDigitTimeout);
    }

    public void setSwingEditorInterDigitTimeout(InterDigitTimeoutJEditor value) {
        swingEditorInterDigitTimeout = value;
    }

    public MaxFailuresJLabel getSwingLabelMaxFailures() {
        if (swingLabelMaxFailures == null) {
            swingLabelMaxFailures = new MaxFailuresJLabel();
        }
        return (swingLabelMaxFailures);
    }

    public void setSwingLabelMaxFailures(MaxFailuresJLabel value) {
        swingLabelMaxFailures = value;
    }

    public MaxFailuresJEditor getSwingEditorMaxFailures() {
        if (swingEditorMaxFailures == null) {
            swingEditorMaxFailures = new MaxFailuresJEditor();
        }
        return (swingEditorMaxFailures);
    }

    public void setSwingEditorMaxFailures(MaxFailuresJEditor value) {
        swingEditorMaxFailures = value;
    }

    public MaxTimeoutsJLabel getSwingLabelMaxTimeouts() {
        if (swingLabelMaxTimeouts == null) {
            swingLabelMaxTimeouts = new MaxTimeoutsJLabel();
        }
        return (swingLabelMaxTimeouts);
    }

    public void setSwingLabelMaxTimeouts(MaxTimeoutsJLabel value) {
        swingLabelMaxTimeouts = value;
    }

    public MaxTimeoutsJEditor getSwingEditorMaxTimeouts() {
        if (swingEditorMaxTimeouts == null) {
            swingEditorMaxTimeouts = new MaxTimeoutsJEditor();
        }
        return (swingEditorMaxTimeouts);
    }

    public void setSwingEditorMaxTimeouts(MaxTimeoutsJEditor value) {
        swingEditorMaxTimeouts = value;
    }

    public DigitLenJLabel getSwingLabelDigitLen() {
        if (swingLabelDigitLen == null) {
            swingLabelDigitLen = new DigitLenJLabel();
        }
        return (swingLabelDigitLen);
    }

    public void setSwingLabelDigitLen(DigitLenJLabel value) {
        swingLabelDigitLen = value;
    }

    public DigitLenJEditor getSwingEditorDigitLen() {
        if (swingEditorDigitLen == null) {
            swingEditorDigitLen = new DigitLenJEditor();
        }
        return (swingEditorDigitLen);
    }

    public void setSwingEditorDigitLen(DigitLenJEditor value) {
        swingEditorDigitLen = 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 = getSwingLabelMenuId();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorMenuId();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelName();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorName();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelGreetLong();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorGreetLong();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelGreetShort();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorGreetShort();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelInvalidSound();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorInvalidSound();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelExitSound();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorExitSound();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelTimeout();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorTimeout();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelInterDigitTimeout();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorInterDigitTimeout();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelMaxFailures();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorMaxFailures();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelMaxTimeouts();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorMaxTimeouts();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

        label = getSwingLabelDigitLen();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorDigitLen();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, height);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, height);
        }
        y = y + vspacing;

    }

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

        if (popObj == null) {
            getSwingEditorMenuId().setInt64Value(null);
        } else {
            getSwingEditorMenuId().setInt64Value(popObj.getRequiredMenuId());
        }

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

        if (popObj == null) {
            getSwingEditorGreetLong().setStringValue(null);
        } else {
            getSwingEditorGreetLong().setStringValue(popObj.getRequiredGreetLong());
        }

        if (popObj == null) {
            getSwingEditorGreetShort().setStringValue(null);
        } else {
            getSwingEditorGreetShort().setStringValue(popObj.getRequiredGreetShort());
        }

        if (popObj == null) {
            getSwingEditorInvalidSound().setStringValue(null);
        } else {
            getSwingEditorInvalidSound().setStringValue(popObj.getRequiredInvalidSound());
        }

        if (popObj == null) {
            getSwingEditorExitSound().setStringValue(null);
        } else {
            getSwingEditorExitSound().setStringValue(popObj.getRequiredExitSound());
        }

        if (popObj == null) {
            getSwingEditorTimeout().setInt32Value(null);
        } else {
            getSwingEditorTimeout().setInt32Value(popObj.getRequiredTimeout());
        }

        if (popObj == null) {
            getSwingEditorInterDigitTimeout().setInt32Value(null);
        } else {
            getSwingEditorInterDigitTimeout().setInt32Value(popObj.getRequiredInterDigitTimeout());
        }

        if (popObj == null) {
            getSwingEditorMaxFailures().setInt32Value(null);
        } else {
            getSwingEditorMaxFailures().setInt32Value(popObj.getRequiredMaxFailures());
        }

        if (popObj == null) {
            getSwingEditorMaxTimeouts().setInt32Value(null);
        } else {
            getSwingEditorMaxTimeouts().setInt32Value(popObj.getRequiredMaxTimeouts());
        }

        if (popObj == null) {
            getSwingEditorDigitLen().setInt32Value(null);
        } else {
            getSwingEditorDigitLen().setInt32Value(popObj.getRequiredDigitLen());
        }
    }

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

        editObj.setRequiredName(getSwingEditorName().getStringValue());

        editObj.setRequiredGreetLong(getSwingEditorGreetLong().getStringValue());

        editObj.setRequiredGreetShort(getSwingEditorGreetShort().getStringValue());

        editObj.setRequiredInvalidSound(getSwingEditorInvalidSound().getStringValue());

        editObj.setRequiredExitSound(getSwingEditorExitSound().getStringValue());

        editObj.setRequiredTimeout(getSwingEditorTimeout().getInt32Value());

        editObj.setRequiredInterDigitTimeout(getSwingEditorInterDigitTimeout().getInt32Value());

        editObj.setRequiredMaxFailures(getSwingEditorMaxFailures().getInt32Value());

        editObj.setRequiredMaxTimeouts(getSwingEditorMaxTimeouts().getInt32Value());

        editObj.setRequiredDigitLen(getSwingEditorDigitLen().getInt32Value());
    }

    public void setPanelMode(CFJPanel.PanelMode value) {
        final String S_ProcName = "setPanelMode";
        CFJPanel.PanelMode oldValue = getPanelMode();
        if (oldValue == value) {
            return;
        }
        ICFFreeSwitchPbxIvrMenuObj focus = getSwingFocusAsPbxIvrMenu();
        if ((value != CFJPanel.PanelMode.Unknown) && (value != CFJPanel.PanelMode.View)) {
            if (focus == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "swingFocus");
            }
        }
        ICFFreeSwitchPbxIvrMenuEditObj editObj;
        if (focus != null) {
            editObj = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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 = (ICFFreeSwitchPbxIvrMenuEditObj) 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) {
            ICFFreeSwitchPbxIvrMenuObj focus = getSwingFocusAsPbxIvrMenu();
            if (focus == null) {
                isEditing = false;
            } else if (null == focus.getEdit()) {
                isEditing = false;
            }
        }
        if (swingReferenceContainerTenant != null) {
            swingReferenceContainerTenant.setEnabled(false);
        }
        if (swingEditorMenuId != null) {
            swingEditorMenuId.setEnabled(false);
        }
        if (swingEditorName != null) {
            swingEditorName.setEnabled(isEditing);
        }
        if (swingEditorGreetLong != null) {
            swingEditorGreetLong.setEnabled(isEditing);
        }
        if (swingEditorGreetShort != null) {
            swingEditorGreetShort.setEnabled(isEditing);
        }
        if (swingEditorInvalidSound != null) {
            swingEditorInvalidSound.setEnabled(isEditing);
        }
        if (swingEditorExitSound != null) {
            swingEditorExitSound.setEnabled(isEditing);
        }
        if (swingEditorTimeout != null) {
            swingEditorTimeout.setEnabled(isEditing);
        }
        if (swingEditorInterDigitTimeout != null) {
            swingEditorInterDigitTimeout.setEnabled(isEditing);
        }
        if (swingEditorMaxFailures != null) {
            swingEditorMaxFailures.setEnabled(isEditing);
        }
        if (swingEditorMaxTimeouts != null) {
            swingEditorMaxTimeouts.setEnabled(isEditing);
        }
        if (swingEditorDigitLen != null) {
            swingEditorDigitLen.setEnabled(isEditing);
        }
    }
}