net.sourceforge.msscodefactory.cfcrm.v2_1.CFCrmSwing.CFCrmSwingAttachmentAttrJPanel.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.msscodefactory.cfcrm.v2_1.CFCrmSwing.CFCrmSwingAttachmentAttrJPanel.java

Source

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

/*
 *   CF Customer Relations Management model
 *
 *   Copyright (c) 2014 Mark Sobkow
 *   
 *      Licensed under the Apache License, Version 2.0 (the "License");
 *      you may not use this file except in compliance with the License.
 *      You may obtain a copy of the License at
 *   
 *          http://www.apache.org/licenses/LICENSE-2.0
 *   
 *      Unless required by applicable law or agreed to in writing, software
 *      distributed under the License is distributed on an "AS IS" BASIS,
 *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *      See the License for the specific language governing permissions and
 *      limitations under the License.
 *   
 * ***********************************************************************
 *
 *   Code manufactured by MSS Code Factory
 */

package net.sourceforge.msscodefactory.cfcrm.v2_1.CFCrmSwing;

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_1.CFLib.*;
import net.sourceforge.msscodefactory.cflib.v2_1.CFLib.Swing.*;
import org.apache.commons.codec.binary.Base64;
import net.sourceforge.msscodefactory.cfcrm.v2_1.CFCrm.*;
import net.sourceforge.msscodefactory.cfcrm.v2_1.CFCrmObj.*;

/**
 *   CFCrmSwingAttachmentAttrJPanel Swing Attribute JPanel implementation
 *   for Attachment.
 */
public class CFCrmSwingAttachmentAttrJPanel extends CFJPanel implements ICFCrmSwingAttachmentJPanelCommon {
    protected ICFCrmSwingSchema swingSchema = null;
    boolean swingIsInitializing = true;

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

    protected class CallbackAttachmentTenantChosen implements ICFCrmSwingTenantChosen {
        public CallbackAttachmentTenantChosen() {
        }

        public void choseTenant(ICFCrmTenantObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceOwnerTenant != null) {
                        ICFCrmAttachmentObj cur = getSwingFocusAsAttachment();
                        if (cur != null) {
                            ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceOwnerTenant.setReferencedObject(value);
                                    editObj.setRequiredOwnerTenant(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

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

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

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

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFCrmSchemaObj schemaObj = swingSchema.getSchema();
            ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
            ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFCrmTenantObj referencedObj = focus.getRequiredOwnerTenant(swingIsInitializing);
            java.util.List<ICFCrmTenantObj> listOfTenant = null;
            CFCrmAuthorization 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<ICFCrmTenantObj> cltn = listOfTenant;
            JInternalFrame frame = swingSchema.getTenantFactory().newPickerJInternalFrame(referencedObj, null, cltn,
                    new CallbackAttachmentTenantChosen());
            ((ICFCrmSwingTenantJPanelCommon) 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 AttachmentTenantCFJReferenceEditor extends CFJReferenceEditor {
        public AttachmentTenantCFJReferenceEditor() {
            super(new ActionPickAttachmentTenantReference(), new ActionViewAttachmentTenantReference());
        }
    }

    protected class AttachmentContactJLabel extends JLabel {
        public AttachmentContactJLabel() {
            super();
            setText("Contact");
        }
    }

    protected class CallbackAttachmentContactChosen implements ICFCrmSwingContactChosen {
        public CallbackAttachmentContactChosen() {
        }

        public void choseContact(ICFCrmContactObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceContainerContact != null) {
                        ICFCrmAttachmentObj cur = getSwingFocusAsAttachment();
                        if (cur != null) {
                            ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceContainerContact.setReferencedObject(value);
                                    editObj.setRequiredContainerContact(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

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

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
            if (focus != null) {
                ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFCrmContactObj referencedObj = focus.getRequiredContainerContact(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("CTC".equals(classCode)) {
                        frame = swingSchema.getContactFactory().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, "ICFCrmContactObj");
                    }
                }
            }
        }
    }

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

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFCrmSchemaObj schemaObj = swingSchema.getSchema();
            ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
            ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFCrmContactObj referencedObj = focus.getRequiredContainerContact(swingIsInitializing);
            java.util.List<ICFCrmContactObj> listOfContact = null;
            Collection<ICFCrmContactObj> cltn = null;
            JInternalFrame frame = swingSchema.getContactFactory().newPickerJInternalFrame(referencedObj, null,
                    cltn, new CallbackAttachmentContactChosen());
            ((ICFCrmSwingContactJPanelCommon) 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 AttachmentContactCFJReferenceEditor extends CFJReferenceEditor {
        public AttachmentContactCFJReferenceEditor() {
            super(new ActionPickAttachmentContactReference(), new ActionViewAttachmentContactReference());
        }
    }

    protected class MimeTypeJLabel extends JLabel {
        public MimeTypeJLabel() {
            super();
            setText("MIME Type");
        }
    }

    protected class CallbackMimeTypeChosen implements ICFCrmSwingMimeTypeChosen {
        public CallbackMimeTypeChosen() {
        }

        public void choseMimeType(ICFCrmMimeTypeObj value) {
            Component cont = getParent();
            while ((cont != null) && (!(cont instanceof JInternalFrame))) {
                cont = cont.getParent();
            }
            if (cont != null) {
                if (!((JInternalFrame) cont).isClosed()) {
                    if (swingReferenceLookupMimeType != null) {
                        ICFCrmAttachmentObj cur = getSwingFocusAsAttachment();
                        if (cur != null) {
                            ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) cur.getEdit();
                            if (null != editObj) {
                                CFJPanel.PanelMode curMode = getPanelMode();
                                if ((curMode == CFJPanel.PanelMode.Add) || (curMode == CFJPanel.PanelMode.Edit)) {
                                    swingReferenceLookupMimeType.setReferencedObject(value);
                                    editObj.setOptionalLookupMimeType(value);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

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

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
            if (focus != null) {
                ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) focus.getEdit();
                if (editObj != null) {
                    focus = editObj;
                }
                JInternalFrame frame = null;
                Container cont;
                JDesktopPane desktop;
                ICFCrmMimeTypeObj referencedObj = focus.getOptionalLookupMimeType(swingIsInitializing);
                if (referencedObj != null) {
                    String classCode = referencedObj.getClassCode();
                    if ("MIME".equals(classCode)) {
                        frame = swingSchema.getMimeTypeFactory().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, "ICFCrmMimeTypeObj");
                    }
                }
            }
        }
    }

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

        public void actionPerformed(ActionEvent e) {
            final String S_ProcName = "actionPerformed";
            Container cont;
            JDesktopPane desktop;
            ICFCrmSchemaObj schemaObj = swingSchema.getSchema();
            ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
            ICFCrmAttachmentEditObj editObj = (ICFCrmAttachmentEditObj) focus.getEdit();
            if (editObj != null) {
                focus = editObj;
            }
            ICFCrmMimeTypeObj referencedObj = focus.getOptionalLookupMimeType(swingIsInitializing);
            java.util.List<ICFCrmMimeTypeObj> listOfMimeType = null;
            listOfMimeType = schemaObj.getMimeTypeTableObj().readAllMimeType();
            if (listOfMimeType == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "listOfMimeType");
            }
            Collection<ICFCrmMimeTypeObj> cltn = listOfMimeType;
            JInternalFrame frame = swingSchema.getMimeTypeFactory().newPickerJInternalFrame(referencedObj, null,
                    cltn, new CallbackMimeTypeChosen());
            ((ICFCrmSwingMimeTypeJPanelCommon) 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 MimeTypeCFJReferenceEditor extends CFJReferenceEditor {
        public MimeTypeCFJReferenceEditor() {
            super(new ActionPickMimeTypeReference(), new ActionViewMimeTypeReference());
        }
    }

    protected class AttachmentIdJLabel extends JLabel {
        public AttachmentIdJLabel() {
            super();
            setText("Attachment Id");
        }
    }

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

    protected class DescriptionJLabel extends JLabel {
        public DescriptionJLabel() {
            super();
            setText("Description");
        }
    }

    protected class DescriptionJEditor extends CFJStringEditor {
        public DescriptionJEditor() {
            super();
            setMaxLen(128);
        }
    }

    protected class AttachmentJLabel extends JLabel {
        public AttachmentJLabel() {
            super();
            setText("Attachment");
        }
    }

    protected class AttachmentJEditor extends CFJTextEditor {
        public AttachmentJEditor() {
            super();
            setMaxLen(2000000);
        }
    }

    protected ICFCrmTenantObj swingOwnerTenantObj = null;
    protected AttachmentTenantJLabel swingLabelOwnerTenant = null;
    protected AttachmentTenantCFJReferenceEditor swingReferenceOwnerTenant = null;
    protected ICFCrmContactObj swingContainerContactObj = null;
    protected AttachmentContactJLabel swingLabelContainerContact = null;
    protected AttachmentContactCFJReferenceEditor swingReferenceContainerContact = null;
    protected ICFCrmMimeTypeObj swingLookupMimeTypeObj = null;
    protected MimeTypeJLabel swingLabelLookupMimeType = null;
    protected MimeTypeCFJReferenceEditor swingReferenceLookupMimeType = null;
    protected AttachmentIdJLabel swingLabelAttachmentId = null;
    protected AttachmentIdJEditor swingEditorAttachmentId = null;
    protected DescriptionJLabel swingLabelDescription = null;
    protected DescriptionJEditor swingEditorDescription = null;
    protected AttachmentJLabel swingLabelAttachment = null;
    protected AttachmentJEditor swingEditorAttachment = null;

    public CFCrmSwingAttachmentAttrJPanel(ICFCrmSwingSchema argSchema, ICFCrmAttachmentObj 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;
        setSwingFocusAsAttachment(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 = getSwingLabelOwnerTenant();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceOwnerTenant();
        add(reference);
        reference.setBounds(fieldx, y, fieldwidth, height);
        y = y + vspacing;

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

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

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

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

        label = getSwingLabelAttachment();
        add(label);
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorAttachment();
        add(compo);
        compo.setBounds(fieldx, y, fieldwidth, textheight);
        y = y + textvspacing;

        // 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 ICFCrmSwingSchema getSwingSchema() {
        return (swingSchema);
    }

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

    public ICFCrmAttachmentObj getSwingFocusAsAttachment() {
        return ((ICFCrmAttachmentObj) getSwingFocus());
    }

    public void setSwingFocusAsAttachment(ICFCrmAttachmentObj value) {
        setSwingFocus(value);
    }

    public ICFCrmTenantObj getSwingOwnerTenantObj() {
        return (swingOwnerTenantObj);
    }

    public void setSwingOwnerTenantObj(ICFCrmTenantObj value) {
        swingOwnerTenantObj = value;
    }

    public AttachmentTenantJLabel getSwingLabelOwnerTenant() {
        if (swingLabelOwnerTenant == null) {
            swingLabelOwnerTenant = new AttachmentTenantJLabel();
        }
        return (swingLabelOwnerTenant);
    }

    public CFJReferenceEditor getSwingReferenceOwnerTenant() {
        if (swingReferenceOwnerTenant == null) {
            swingReferenceOwnerTenant = new AttachmentTenantCFJReferenceEditor();
        }
        return (swingReferenceOwnerTenant);
    }

    public void setSwingReferenceOwnerTenant(AttachmentTenantCFJReferenceEditor value) {
        swingReferenceOwnerTenant = value;
    }

    public ICFCrmContactObj getSwingContainerContactObj() {
        if (swingContainerContactObj == null) {
        }
        return (swingContainerContactObj);
    }

    public void setSwingContainerContactObj(ICFCrmContactObj value) {
        swingContainerContactObj = value;
    }

    public AttachmentContactJLabel getSwingLabelContainerContact() {
        if (swingLabelContainerContact == null) {
            swingLabelContainerContact = new AttachmentContactJLabel();
        }
        return (swingLabelContainerContact);
    }

    public AttachmentContactCFJReferenceEditor getSwingReferenceContainerContact() {
        if (swingReferenceContainerContact == null) {
            swingReferenceContainerContact = new AttachmentContactCFJReferenceEditor();
        }
        return (swingReferenceContainerContact);
    }

    public void setSwingReferenceContainerContact(AttachmentContactCFJReferenceEditor value) {
        swingReferenceContainerContact = value;
    }

    public ICFCrmMimeTypeObj getSwingLookupMimeTypeObj() {
        return (swingLookupMimeTypeObj);
    }

    public void setSwingLookupMimeTypeObj(ICFCrmMimeTypeObj value) {
        swingLookupMimeTypeObj = value;
    }

    public JLabel getSwingLabelLookupMimeType() {
        if (swingLabelLookupMimeType == null) {
            swingLabelLookupMimeType = new MimeTypeJLabel();
        }
        return (swingLabelLookupMimeType);
    }

    public CFJReferenceEditor getSwingReferenceLookupMimeType() {
        if (swingReferenceLookupMimeType == null) {
            swingReferenceLookupMimeType = new MimeTypeCFJReferenceEditor();
        }
        return (swingReferenceLookupMimeType);
    }

    public void setSwingReferenceLookupMimeType(MimeTypeCFJReferenceEditor value) {
        swingReferenceLookupMimeType = value;
    }

    public AttachmentIdJLabel getSwingLabelAttachmentId() {
        if (swingLabelAttachmentId == null) {
            swingLabelAttachmentId = new AttachmentIdJLabel();
        }
        return (swingLabelAttachmentId);
    }

    public void setSwingLabelAttachmentId(AttachmentIdJLabel value) {
        swingLabelAttachmentId = value;
    }

    public AttachmentIdJEditor getSwingEditorAttachmentId() {
        if (swingEditorAttachmentId == null) {
            swingEditorAttachmentId = new AttachmentIdJEditor();
        }
        return (swingEditorAttachmentId);
    }

    public void setSwingEditorAttachmentId(AttachmentIdJEditor value) {
        swingEditorAttachmentId = value;
    }

    public DescriptionJLabel getSwingLabelDescription() {
        if (swingLabelDescription == null) {
            swingLabelDescription = new DescriptionJLabel();
        }
        return (swingLabelDescription);
    }

    public void setSwingLabelDescription(DescriptionJLabel value) {
        swingLabelDescription = value;
    }

    public DescriptionJEditor getSwingEditorDescription() {
        if (swingEditorDescription == null) {
            swingEditorDescription = new DescriptionJEditor();
        }
        return (swingEditorDescription);
    }

    public void setSwingEditorDescription(DescriptionJEditor value) {
        swingEditorDescription = value;
    }

    public AttachmentJLabel getSwingLabelAttachment() {
        if (swingLabelAttachment == null) {
            swingLabelAttachment = new AttachmentJLabel();
        }
        return (swingLabelAttachment);
    }

    public void setSwingLabelAttachment(AttachmentJLabel value) {
        swingLabelAttachment = value;
    }

    public AttachmentJEditor getSwingEditorAttachment() {
        if (swingEditorAttachment == null) {
            swingEditorAttachment = new AttachmentJEditor();
        }
        return (swingEditorAttachment);
    }

    public void setSwingEditorAttachment(AttachmentJEditor value) {
        swingEditorAttachment = 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 = getSwingLabelOwnerTenant();
        label.setBounds(labelx, y, labelwidth, height);
        reference = getSwingReferenceOwnerTenant();
        reference.setBounds(fieldx, y, usefieldwidth, height);
        y = y + vspacing;

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

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

        label = getSwingLabelAttachmentId();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorAttachmentId();
        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 = getSwingLabelDescription();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorDescription();
        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 = getSwingLabelAttachment();
        label.setBounds(labelx, y, labelwidth, height);
        compo = getSwingEditorAttachment();
        dim = compo.getMaximumSize();
        if (dim.width < usefieldwidth) {
            compo.setBounds(fieldx, y, dim.width, textheight);
        } else {
            compo.setBounds(fieldx, y, fieldwidth, textheight);
        }
        y = y + textvspacing;

    }

    public void populateFields() {
        ICFCrmAttachmentObj popObj;
        ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
        if (focus != null) {
            popObj = (ICFCrmAttachmentObj) (focus.getEdit());
            if (popObj == null) {
                popObj = focus;
            }
        } else {
            popObj = null;
        }
        if (getPanelMode() == CFJPanel.PanelMode.Unknown) {
            popObj = null;
        }
        if (popObj == null) {
            swingOwnerTenantObj = null;
        } else {
            swingOwnerTenantObj = popObj.getRequiredOwnerTenant(swingIsInitializing);
        }
        if (swingReferenceOwnerTenant != null) {
            swingReferenceOwnerTenant.setReferencedObject(swingOwnerTenantObj);
        }

        if (popObj == null) {
            swingContainerContactObj = null;
        } else {
            swingContainerContactObj = popObj.getRequiredContainerContact(swingIsInitializing);
        }
        if (swingReferenceContainerContact != null) {
            swingReferenceContainerContact.setReferencedObject(swingContainerContactObj);
        }

        if (popObj == null) {
            swingLookupMimeTypeObj = null;
        } else {
            swingLookupMimeTypeObj = popObj.getOptionalLookupMimeType(swingIsInitializing);
        }
        if (swingReferenceLookupMimeType != null) {
            swingReferenceLookupMimeType.setReferencedObject(swingLookupMimeTypeObj);
        }

        if (popObj == null) {
            getSwingEditorAttachmentId().setInt64Value(null);
        } else {
            getSwingEditorAttachmentId().setInt64Value(popObj.getRequiredAttachmentId());
        }

        if (popObj == null) {
            getSwingEditorDescription().setStringValue(null);
        } else {
            getSwingEditorDescription().setStringValue(popObj.getRequiredDescription());
        }

        if (popObj == null) {
            getSwingEditorAttachment().setTextValue(null);
        } else {
            getSwingEditorAttachment().setTextValue(popObj.getRequiredAttachment());
        }
    }

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

        swingLookupMimeTypeObj = (ICFCrmMimeTypeObj) (swingReferenceLookupMimeType.getReferencedObject());
        editObj.setOptionalLookupMimeType(swingLookupMimeTypeObj);

        editObj.setRequiredDescription(getSwingEditorDescription().getStringValue());

        editObj.setRequiredAttachment(getSwingEditorAttachment().getTextValue());
    }

    public void setPanelMode(CFJPanel.PanelMode value) {
        final String S_ProcName = "setPanelMode";
        CFJPanel.PanelMode oldValue = getPanelMode();
        if (oldValue == value) {
            return;
        }
        ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
        if ((value != CFJPanel.PanelMode.Unknown) && (value != CFJPanel.PanelMode.View)) {
            if (focus == null) {
                throw CFLib.getDefaultExceptionFactory().newNullArgumentException(getClass(), S_ProcName, 0,
                        "swingFocus");
            }
        }
        ICFCrmAttachmentEditObj editObj;
        if (focus != null) {
            editObj = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentObj) 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 = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentEditObj) 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 = (ICFCrmAttachmentEditObj) 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) {
            ICFCrmAttachmentObj focus = getSwingFocusAsAttachment();
            if (focus == null) {
                isEditing = false;
            } else if (null == focus.getEdit()) {
                isEditing = false;
            }
        }
        if (swingReferenceOwnerTenant != null) {
            swingReferenceOwnerTenant.setEnabled(false);
        }
        if (swingReferenceContainerContact != null) {
            swingReferenceContainerContact.setEnabled(false);
        }
        if (swingReferenceLookupMimeType != null) {
            swingReferenceLookupMimeType.setEnabled(isEditing);
        }
        if (swingEditorAttachmentId != null) {
            swingEditorAttachmentId.setEnabled(false);
        }
        if (swingEditorDescription != null) {
            swingEditorDescription.setEnabled(isEditing);
        }
        if (swingEditorAttachment != null) {
            swingEditorAttachment.setEnabled(isEditing);
        }
    }
}