Java tutorial
// 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); } } }