Package Express.windows

Source Code of Express.windows.ExpressClassWindow$AsyncRunner

package Express.windows;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.KeyboardFocusManager;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.Serializable;
import java.util.Iterator;

import javax.help.CSH;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.ToolTipManager;
import javax.swing.UIManager;
import javax.swing.text.DefaultEditorKit;

import org.apache.log4j.Logger;

import DisplayProject.CharacterField;
import DisplayProject.Constants;
import DisplayProject.CursorMgr;
import DisplayProject.DataField;
import DisplayProject.GridField;
import DisplayProject.LayoutManagerHelper;
import DisplayProject.ListField;
import DisplayProject.PaletteList;
import DisplayProject.RadioList;
import DisplayProject.UDSWindow;
import DisplayProject.UIutils;
import DisplayProject.WindowFormLayout;
import DisplayProject.WindowManager;
import DisplayProject.actions.Caption;
import DisplayProject.actions.CharacterTemplate;
import DisplayProject.actions.ColourChange;
import DisplayProject.actions.DateTemplate;
import DisplayProject.actions.FrameWeight;
import DisplayProject.actions.HeightPolicy;
import DisplayProject.actions.IntegerValue;
import DisplayProject.actions.NumericTemplate;
import DisplayProject.actions.Parent;
import DisplayProject.actions.StatusText;
import DisplayProject.actions.TextValue;
import DisplayProject.actions.UserWindow;
import DisplayProject.actions.WidgetState;
import DisplayProject.actions.WidthPolicy;
import DisplayProject.actions.WindowDisplayState;
import DisplayProject.binding.BindingManager;
import DisplayProject.binding.beans.Observable;
import DisplayProject.controls.MenuList;
import DisplayProject.controls.MenuSeparator;
import DisplayProject.controls.Panel;
import DisplayProject.controls.TextGraphic;
import DisplayProject.events.ClientEventManager;
import DisplayProject.factory.CompoundFieldFactory;
import DisplayProject.factory.DataFieldFactory;
import DisplayProject.factory.MenuFactory;
import DisplayProject.plaf.Win32LookAndFeel;
import DisplayProject.printing.PrintActionListener;
import DisplayProject.printing.PrintSetupActionListener;
import Express.services.Array_Of_BusinessClass;
import Express.services.Array_Of_BusinessQuery;
import Express.services.Array_Of_QueryAttrMap;
import Express.services.BusinessClass;
import Express.services.BusinessClient;
import Express.services.BusinessKey;
import Express.services.BusinessQuery;
import Express.services.ConcurrencyMgr;
import Express.services.ConstraintOperation;
import Express.services.Error;
import Express.services.ParameterHolder_BusinessClass;
import Express.services.ParameterHolder_BusinessClass_Array;
import Express.services.QueryAttrMap;
import Framework.Array_Of_ListElement;
import Framework.BooleanData;
import Framework.CancelException;
import Framework.CloneHelper;
import Framework.DataValue;
import Framework.DateFormat;
import Framework.DateTimeData;
import Framework.DateTimeNullable;
import Framework.ErrorDesc;
import Framework.ErrorMgr;
import Framework.EventHandle;
import Framework.EventManager;
import Framework.EventRegistration;
import Framework.EventRegistrationCallback;
import Framework.ForteKeyboardFocusManager;
import Framework.ImageData;
import Framework.IntegerData;
import Framework.IntervalData;
import Framework.ListElement;
import Framework.LogMgr;
import Framework.NumericData;
import Framework.ParameterHolder_integer;
import Framework.RuntimeProperties;
import Framework.StringUtils;
import Framework.Task;
import Framework.TextData;

/**
* The ExpressClassWindow class is a superclass for all Express windows that display records.
* <p>
* @author ITerative Consulting
* @since  26-Feb-2008
*/
@RuntimeProperties(isDistributed=false, isAnchored=false, isShared=false, isTransactional=false)
@UDSWindow()
@SuppressWarnings("serial")
public class ExpressClassWindow
        extends ExpressContainerWindow
        implements Serializable, Observable
{

    // -------------
    // Inner classes
    // -------------
    /**
     * This class contains routines to be able to start Tasks (Threads) for the methods on this class in a manner
     * similar to that allowed by Forte. This includes:<p>
     * <ul>
     * <li>Arbitrary parameters</li>
     * <li>Starting threads as daemon threads</li>
     * <li>Naming the thread for easy debugging</li>
     * </ul>
     */
    public static class AsyncRunner implements Runnable {
        private Object []_theList;
        private ExpressClassWindow _object;
        /**
         * display<p>
         * <p>
         * @param info Type: LinkInfo (Input) (default in Forte: NIL)
         * @return Array_Of_BusinessClass<BusinessClass>
         */
    public Task display(ExpressClassWindow pExpressClassWindow, LinkInfo info) {
            this._theList = new Object[] {info};
            this._object = pExpressClassWindow;
            Task aThread = new Task(this, "ExpressClassWindow.Display" );
            aThread.start();
            return aThread;
        }


        public void run() {
            try {
                this._object.display( (LinkInfo)this._theList[0] );
            }
            // Errors here are ignored (as per TOOL), but may be thrown as an Exception event
            catch (Throwable e) {
                ErrorMgr.showErrors(null, "Unhandled exception", e);
            }
        }
    }

    // ---------
    // Constants
    // ---------
    // -----------------
    // Event definitions
    // -----------------
    public static final String cEVENT_AFTER_RESULT_SET_CHANGE = "AfterResultSetChange";
    public static final String cEVENT_SAVE_AFTER_CLEAR = "SaveAfterClear";
    public static final String cEVENT_SAVE_AFTER_FINISH_UP = "SaveAfterFinishUp";

    public static final int DD_ALL_FROM_TABLE = 1;
    public static final int DD_ALL_FROM_WINDOW = 6;
    public static final int DD_ASSOCIATED_RECORD = 3;
    public static final int DD_DEFAULT = 0;
    public static final int DD_NEW_RECORD_ASSOCIATE = 4;
    public static final int DD_NEW_RECORD_INSERT = 7;
    public static final int DD_NO_RECORDS = 2;
    public static final int DD_SELECTED_RECORD = 5;
    public static final int RT_CRITERIA = 5;
    public static final int RT_DB = 3;
    public static final int RT_INSERT = 4;
    public static final int RT_NEW = 2;
    public static final int RT_NIL = 1;

    // ----------
    // Attributes
    // ----------
    protected BindingManager bindingManager = null;
    private BusinessClient businessClient;
    private boolean isResultSetModified;
    private TextData modeText;
    private BusinessQuery recordTemplate;
    private Array_Of_BusinessClass<BusinessClass> resultSet;
    private TabSequenceMgr tabMgr;
    private IntegerData windowMode;
    private int windowState;

    // ------------
    // Constructors
    // ------------
    public ExpressClassWindow() {
        // Explicitly call the superclass constructor to prevent the implicit call
        super();
        this.initialize();

    }
   
    protected void postConstructor() {
      super.postConstructor();
        this.setWindowMode(this.getModeMC());
        this.setModeText(new TextData());

        this.setIsResultSetModified(false);

        this.setTabMgr(new TabSequenceMgr());

    }

    // ----------------------
    // Accessors and Mutators
    // ----------------------
    protected BindingManager getBindingManager() {
        if (this.bindingManager == null) {
            this.bindingManager = new BindingManager(this);
        }
        return bindingManager;
    }

    public void setBusinessClient(BusinessClient businessClient) {
        BusinessClient oldValue = this.businessClient;
        this.businessClient = businessClient;
        this.qq_Listeners.firePropertyChange("businessClient", oldValue, this.businessClient);
    }

    public BusinessClient getBusinessClient() {
        return this.businessClient;
    }

    public void setIsResultSetModified(boolean isResultSetModified) {
        boolean oldValue = this.isResultSetModified;
        this.isResultSetModified = isResultSetModified;
        this.qq_Listeners.firePropertyChange("isResultSetModified", oldValue, this.isResultSetModified);
    }

    public boolean getIsResultSetModified() {
        return this.isResultSetModified;
    }

    public void setModeText(TextData modeText) {
        TextData oldValue = this.modeText;
        this.modeText = modeText;
        this.qq_Listeners.firePropertyChange("modeText", oldValue, this.modeText);
    }

    public TextData getModeText() {
        return this.modeText;
    }

    public void setRecordTemplate(BusinessQuery recordTemplate) {
        BusinessQuery oldValue = this.recordTemplate;
        this.recordTemplate = recordTemplate;
        this.qq_Listeners.firePropertyChange("recordTemplate", oldValue, this.recordTemplate);
    }

    public BusinessQuery getRecordTemplate() {
        return this.recordTemplate;
    }

    public void setResultSet(Array_Of_BusinessClass<BusinessClass> resultSet) {
        Array_Of_BusinessClass<BusinessClass> oldValue = this.resultSet;
        this.resultSet = resultSet;
        this.qq_Listeners.firePropertyChange("resultSet", oldValue, this.resultSet);
    }

    public Array_Of_BusinessClass<BusinessClass> getResultSet() {
        return this.resultSet;
    }

    public void setTabMgr(TabSequenceMgr tabMgr) {
        TabSequenceMgr oldValue = this.tabMgr;
        this.tabMgr = tabMgr;
        this.qq_Listeners.firePropertyChange("tabMgr", oldValue, this.tabMgr);
    }

    public TabSequenceMgr getTabMgr() {
        return this.tabMgr;
    }

    public void setWindowMode(IntegerData windowMode) {
        IntegerData oldValue = this.windowMode;
        this.windowMode = windowMode;
        this.qq_Listeners.firePropertyChange("windowMode", oldValue, this.windowMode);
    }

    public IntegerData getWindowMode() {
        return this.windowMode;
    }

    public void setWindowState(int windowState) {
        int oldValue = this.windowState;
        this.windowState = windowState;
        this.qq_Listeners.firePropertyChange("windowState", oldValue, this.windowState);
    }

    public int getWindowState() {
        return this.windowState;
    }

    // -------
    // Methods
    // -------
    /**
     * addFieldsToRecord<p>
     * AddFieldsToRecord<br>
     *     AddFieldsToRecord is a noop method that the express<br>
     *     developer can override to add non-displayed fields<br>
     *     to the record retrieved from the database.<br>
     * <p>
     * @param template Type: BusinessQuery
     */
    public void addFieldsToRecord(BusinessQuery template) {
    }

    /**
     * addFieldsToTabSequence<p>
     * AddFieldsToTabSequence<br>
     *     AddFieldsToTabSequence adds the fields for this<br>
     *     window and its nested/folder windows to the tab<br>
     *     manager's field list.<br>
     * <p>
     */
    public void addFieldsToTabSequence() {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.AddFieldsToTabSequence", this).getException();
    }

    /**
     * addRecordsToSave<p>
     * AddRecordsToSave<br>
     *     AddRecordsToSave is a noop method that the express<br>
     *     developer can override to add records to the result<br>
     *     set just before it is saved.  The records will be<br>
     *     automatically removed from the result set after the<br>
     *     save.<br>
     * <p>
     * @return Array_Of_BusinessClass<BusinessClass>
     */
    public Array_Of_BusinessClass<BusinessClass> addRecordsToSave() {
        return null;
    }

    /**
     * afterChildWindowChange<p>
     * AfterChildWindowChange<br>
     *      AfterChildWindowChange is called when a linked<br>
     *     window's result set is changed by the end user.<br>
     * <p>
     * @param window Type: ExpressClassWindow
     */
    public void afterChildWindowChange(ExpressClassWindow window) {
    }

    /**
     * basicEvents (Translation of Forte Event Handler)<p>
     * <p>
     * @return EventRegistration
     */
    @SuppressWarnings("deprecation")
  public EventRegistration basicEvents() {
        EventRegistration qq_resultRegistration = new EventRegistration();

        // -----------------
        // AfterCancelWindow
        // -----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this, ExpressContainerWindow.cEVENT_AFTER_CANCEL_WINDOW,
                new EventRegistrationCallback("ExpressClassWindow_AfterCancelWindow_this")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        qq_Block: try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                //
                                // when the user cancels, request confirmation,
                                // do not return anything, do not commit changes.
                                //
                                if (ExpressClassWindow.this.getBusinessClient() != null && ExpressClassWindow.this.getBusinessClient().qq_getRevertable()) {
                                    ExpressClassWindow.this.getBusinessClient().revert(ExpressClassWindow.this.getResultSet());
                                }
                                //
                                // End the current transaction, if one is active
                                //
                                if (ExpressClassWindow.this.getBusinessClient() != null && ExpressClassWindow.this.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_MODELESS) {
                                    ExpressClassWindow.this.getBusinessClient().endTrans(true);
                                }
                                //
                                // nil out the result set and selected record index
                                //
                                ExpressClassWindow.this.setResultSet(null);
                                ExpressClassWindow.this.getWindowInfo().getRecordIndex().setValue(0);
                                qq_HandlerResult = false;
                                break qq_Block;
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------
        // AfterFinishUp
        // -------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this, ExpressContainerWindow.cEVENT_AFTER_FINISH_UP,
                new EventRegistrationCallback("ExpressClassWindow_AfterFinishUp_this")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        qq_Block: try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                //
                                // record result set information
                                //
                                ExpressClassWindow.this.getWindowInfo().setIsResultSetModified(ExpressClassWindow.this.getIsResultSetModified());
                                ExpressClassWindow.this.getWindowInfo().getRecordIndex().setValue(ExpressClassWindow.this.getRecordIndex().getValue());
                                qq_HandlerResult = false;
                                break qq_Block;
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------
        // task.shutdown
        // -------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                Task.currentTask(), "Shutdown",
                new EventRegistrationCallback("TaskHandle_Shutdown_TaskcurrentTask")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.finishUp(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmClose().getValue());
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // --------------------
        // AfterResultSetChange
        // --------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this, ExpressClassWindow.cEVENT_AFTER_RESULT_SET_CHANGE,
                new EventRegistrationCallback("ExpressClassWindow_AfterResultSetChange_this")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.resetCommandStates();
                                ExpressClassWindow.this.markRecordInvalid(ExpressClassWindow.this.getCurRec());
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );

        return qq_resultRegistration;
    }

    /**
     * clearFieldsForSearch<p>
     * ClearFieldsForSearch<br>
     *      ClearFieldsForSearch removes any templates from the window's<br>
     *     data fields.<br>
     * <p>
     */
    public void clearFieldsForSearch() {
    }

    /**
     * clearResultSet<p>
     * ClearResultSet<br>
     *      ClearResultSet aborts any changes to the current result<br>
     *     set, discards it, and replaces it with a result set con-<br>
     *     taining one empty record.<br>
     * <p>
     *      confirm specifies if the method should warn the user<br>
     *       that they have changes and allows them to commit<br>
     *       their changes or cancel the clear.<br>
     * <p>
     *      Returns TRUE if the operation was successful, FALSE if<br>
     *     the user cancelled it.<br>
     * <p>
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    public boolean clearResultSet(boolean confirm) {
        int tempInteger = 0;

        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_WORKING_CLEAR) );

        if (confirm == true && this.getIsResultSetModified() == true && !(this.getWindowInfo().getIsReadOnlyResultSet())) {
            // ----------------------------------------
            // Parameters for call to IsSaveAppropriate
            // ----------------------------------------
            ParameterHolder_integer qq_ccMode = new ParameterHolder_integer(tempInteger);
            boolean qq_IsSaveAppropriate = this.isSaveAppropriate(qq_ccMode);
            tempInteger = qq_ccMode.getInt();
            if (qq_IsSaveAppropriate) {
                int answer = 0;
                //
                // request confirmation
                //
                answer = this.getAppBroker().confirmationDialog(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_CONFIRM_CLEAR)), this.getWindowName(), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.CANCEL_OPTION, 50, this.getAppBroker().getPreferences().getConfirmClear());
                if (answer == JOptionPane.YES_OPTION) {
                    UIutils.requestFinalize(this, new EventHandle(this, ExpressClassWindow.cEVENT_SAVE_AFTER_CLEAR));;
                    return true;
                }
                else if (answer == JOptionPane.CANCEL_OPTION) {
                    this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ABORTED_CLEAR) );
                    return false;
                }
            }
        }

        this.postClearResultSet();

        return true;
    }
    /**
     * Same as {@link #clearResultSet(boolean) with a default value of false
     *
     */
    public boolean clearResultSet() {
      return this.clearResultSet(false);
    }
    /**
     * commandLinkQueryAddKeys<p>
     * Called when a command link or drilldown window is about<br>
     * to call GetDependentData on its Parent window.  In<br>
     * certain cases, the query built by the parent window<br>
     * will not have enough restriction to select a single row that<br>
     * is needed by this window, which displays the selected row in<br>
     * the parent window.  This method makes sure the query specifies<br>
     * all the primary key values for the data in the current window<br>
     * before calling the parent window to continue the query<br>
     * construction.<br>
     * <p>
     * @param record Type: BusinessClass
     * @param template Type: BusinessQuery
     */
    public void commandLinkQueryAddKeys(BusinessClass record, BusinessQuery template) {
        LinkInfo pwi = null;
        if (this.getWindowInfo().getParentWindow() != null) {
            pwi = this.getWindowInfo().getParentWindow().getWindowInfo();
        }

        // this window displays same data as parent
        // parent window can't access manager
        if ((this.getWindowInfo().getLinkType() == ExpressContainerWindow.LT_COMMAND || this.getWindowInfo().getLinkType() == ExpressContainerWindow.LT_DRILLDOWN) && this.getWindowInfo().getDataToDisplay() == ExpressClassWindow.DD_SELECTED_RECORD && pwi != null && pwi.getResultSet() != null) {
            template.clearConstraints(false);

            if (record != null && record.getInstanceKey() != null) {
                for (int i = 1; i <= template.getNumKeyAttrs(); i++) {
                    template.addConstraint(i, ConstraintOperation.OP_EQ, record.getInstanceKey().getValues().get(i-1));
                }
            }
        }
    }

    /**
     * copyForeignKeysFromParentRecord<p>
     * CopyForeignKeysFromParentRecord<br>
     *     Copy foreign key values from parent window record to argument<br>
     *     "Record". This is only done in Command and Drilldown windows<br>
     *     where the current window displays data that is associated<br>
     *     with the data in the calling window (this isn't needed for<br>
     *     Nested and Folder windows because they copy foreign key info<br>
     *     from parent window record at Save time).<br>
     * <p>
     * @param record Type: BusinessClass
     * @param invokedByChildWindow Type: boolean (Input) (default in Forte: FALSE)
     */
    public void copyForeignKeysFromParentRecord(BusinessClass record, boolean invokedByChildWindow) {
        if (this.getWindowInfo() != null && (this.getWindowInfo().getLinkType() == ExpressContainerWindow.LT_COMMAND || this.getWindowInfo().getLinkType() == ExpressContainerWindow.LT_DRILLDOWN || invokedByChildWindow)) {
            if (this.getWindowInfo().getAssocNum() != 0) {
                BusinessClass currec = null;
                if (this.getWindowInfo().getParentWindow() != null) {
                    currec = this.getWindowInfo().getParentWindow().getCurRec();
                }

                if ((this.getWindowInfo().getDataToDisplay() == ExpressClassWindow.DD_ASSOCIATED_RECORD) && currec != null) {
                    BusinessQuery qry = currec.newQuery();
                    Array_Of_QueryAttrMap<QueryAttrMap> fks = qry.getForeignAttrMap(this.getWindowInfo().getAssocNum());
                    if (fks != null && fks.size() > 0 && fks.get(0).getLocal() == 1) {
                        //
                        // Record class contains a foreign key that references primary key
                        // in 'currec' class (Primary keys always begin at ATTR_ number=1).
                        //
                        int recStat = record.getInstanceStatus();
                        if (fks != null) {
                            for (QueryAttrMap fk : fks) {
                                record.setAttr(fk.getForeign(), currec.getAttr(fk.getLocal()));
                                if (this.getBusinessClient() != null) {
                                    this.getBusinessClient().logAttr(record, fk.getForeign());
                                }
                            }
                        }
                        //
                        // We don't want this copying of values to make the Record look
                        // like user has entered data on it. So, if Logattr changed the
                        // recordStatus from EMPTY, set it back.
                        //
                        if (recStat == BusinessClass.ST_EMPTY && record.getInstanceStatus() != BusinessClass.ST_EMPTY) {
                            record.setInstanceStatus(BusinessClass.ST_EMPTY);
                        }
                    }
                }
            }
            else if (this.getWindowInfo().getParentWindowCurrentRecord() != null && (this.getWindowInfo().getParentWindowCurrentRecord().getClass() == record.getClass())) {
                //
                // This window displays same data as parent. Ask parent window
                // to copy keys.
                //
                if (this.getWindowInfo().getParentWindow() != null) {
                    this.getWindowInfo().getParentWindow().copyForeignKeysFromParentRecord(record, true);
                }
            }
            else {
                // this window and parent window display unrelated classes.
            }
        }
    }
    /**
     * Same as {@link #copyForeignKeysFromParentRecord(BusinessClass, boolean) with default boolean value false.
     * @param record
     */
    public void copyForeignKeysFromParentRecord(BusinessClass record){
      this.copyForeignKeysFromParentRecord(record, false);
    }

    /**
     * copyRecordValues<p>
     * Copy values from one record to another.<br>
     * The two record types being copied must be of the same class.<br>
     * Values are only copied if they are different.<br>
     * If doLogAttr=TRUE then do a logAttr on each copied value; by<br>
     *   default, don't do a logAttr; note that if values in "fromRecord"<br>
     *   have already been saved, then a logAttr should Not be done.<br>
     * If setIfNil=TRUE then values are copied fromRecord-->toRecord even if<br>
     *   the corresponding attr in toRecord is NIL; by default, if the attr<br>
     *   in toRecord is NIL, then the copy is Not done.<br>
     * Returns TRUE if something was copied; FALSE otherwise.<br>
     * <p>
     * @param fromRecord Type: BusinessClass
     * @param toRecord Type: BusinessClass
     * @param doLogAttr Type: boolean (Input) (default in Forte: FALSE)
     * @param setIfNil Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    public boolean copyRecordValues(BusinessClass fromRecord, BusinessClass toRecord, boolean doLogAttr, boolean setIfNil) {
        if (fromRecord == null || toRecord == null || StringUtils.notEquals(fromRecord.getClass().getSimpleName(), toRecord.getClass().getSimpleName()) || fromRecord.getInstanceStatus() == BusinessClass.ST_EMPTY) {
            if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20)) {
                Logger.getLogger("task.part.logmgr").info("CopyRecordValues: Skipping copy; initial conditions failed.");
            }
            return false;
        }

        if (fromRecord == toRecord) {
            if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20)) {
                Logger.getLogger("task.part.logmgr").info("CopyRecordValues: Skipping copy; fromRecord and toRecord are the same object.");
            }
            return false;
        }

        DataValue fromValue = null;
        DataValue toValue = null;
        boolean didCopy = false;

        BusinessQuery tmpQry = fromRecord.newQuery();
        int lastDBAttr = tmpQry.getNumAttrs(BusinessQuery.ATTR_DB);

        for (int i = 1; i <= tmpQry.getNumAttrs(BusinessQuery.ATTR_SIMPLE); i++) {
            toValue = toRecord.getAttr(i);
            fromValue = fromRecord.getAttr(i);

            if ((toValue != null && fromValue != null && StringUtils.notEquals(toValue.getTextValue().toString(), fromValue.getTextValue().toString())) || (toValue == null && setIfNil)) {

                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20)) {
                    Logger.getLogger("task.part.logmgr").info("Copying: fromValue.TextValue=");
                    if (fromValue != null) {
                        Logger.getLogger("task.part.logmgr").info(fromValue.getTextValue());
                    }
                    else {
                        Logger.getLogger("task.part.logmgr").info("NIL");
                    }
                    Logger.getLogger("task.part.logmgr").info("  -->  toValue.TextValue=");
                    if (toValue != null) {
                        Logger.getLogger("task.part.logmgr").info(toValue.getTextValue());
                    }
                    else {
                        Logger.getLogger("task.part.logmgr").info("NIL");
                    }
                }

                // don't logAttr a Custom attribute.
                if (doLogAttr && this.getBusinessClient() != null && i <= lastDBAttr) {
                    this.getBusinessClient().logAttr(toRecord, i);
                }

                if (fromValue != null) {
                    toRecord.setAttrValue(i, fromValue);
                }
                else {
                    toRecord.setAttr(i, fromValue);
                }

                didCopy = true;
            }
        }

        return didCopy;
    }

    /**
     * deleteRec<p>
     * DeleteRec<br>
     *      DeleteRec deletes the given record from thet<br>
     *     displayed result set.<br>
     * <p>
     * @param recordNumber Type: int
     */
    public void deleteRec(int recordNumber) {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.DeleteRec", this).getException();
    }

    /**
     * deleteRecordFromResultSet<p>
     * DeleteRecordFromResultSet<br>
     *      DeleteRecordFromResultSet marks the currently selected record for<br>
     *     deletion from the database and removes it from the<br>
     *     displayed record set.<br>
     * <p>
     *      confirm specifies if the Window should warn the user.<br>
     * <p>
     *      Returns TRUE if successful, FALSE if the user cancels<br>
     *     the operation.<br>
     * <p>
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    @SuppressWarnings("unchecked")
  public boolean deleteRecordFromResultSet(boolean confirm) {
        BusinessClass theCurrentRecord = this.getCurRec();

        this.getStatusLine().setStatus(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_WORKING_DELETE)), (DataValue)null);

        if (confirm == true) {
            int answer = 0;
            //
            // request confirmation
            //
            answer = this.getAppBroker().confirmationDialog(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_CONFIRM_DELETE)), this.getWindowName(), JOptionPane.YES_NO_OPTION, JOptionPane.NO_OPTION, 50, this.getAppBroker().getPreferences().getConfirmDelete());
            if (answer == JOptionPane.NO_OPTION) {
                this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ABORTED_DELETE) );
                return false;
            }
        }

        //
        // if this record is empty or is marked for insert,
        // we delete it from both result sets.
        //
        if (theCurrentRecord.getInstanceStatus() == BusinessClass.ST_INSERT || theCurrentRecord.getInstanceStatus() == BusinessClass.ST_EMPTY) {
            //
            // the index does not necessarily represent the index of
            // this record in the full result set, so locate it using
            // the DisplayResultSet's pointer, which we can find with
            // the index.
            //
            this.getResultSet().deleteRow(theCurrentRecord);

            //
            // otherwise, the record must be deleted from the
            // database, so we delete it from the displayed result
            // set after marking it for deletion.  The full
            // result set will retain it's pointer so that it
            // may delete the record when the user commits.
            //
        }
        else {
            //
            // Mark the record for deletion
            //
            this.getBusinessClient().delete(theCurrentRecord);

            //
            // Notify anyone who's listening that this window's
            // result set has changed
            //
            this.setIsResultSetModified(true);
            EventManager.postEvent( this, ExpressClassWindow.cEVENT_AFTER_RESULT_SET_CHANGE );

        }

        //
        // delete the row from the displayed result set.
        //
        this.deleteRec(this.getRecordIndex().getValue());

        //
        // Clear out any associated records
        //
        for (int i = 1; i <= this.getRecordTemplate().getNumAttrs(BusinessQuery.ATTR_FOREIGN); i++) {
            if (this.getRecordTemplate().hasAttr(i+10000) && (this.getRecordTemplate().getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) <= 0) {
                BusinessClass x = null;
                // ------------------------------
                // Parameters for call to GetAttr
                // ------------------------------
                ParameterHolder_BusinessClass qq_value = new ParameterHolder_BusinessClass();
                theCurrentRecord.getAttr(i+10000, qq_value);
                x = (BusinessClass)qq_value.getObject();
                if (x != null) {
                    x.reset(false);
                }
            }
            if (this.getRecordTemplate().hasAttr(i+10000) && (this.getRecordTemplate().getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) > 0) {
                Array_Of_BusinessClass<BusinessClass> x = null;
                // ------------------------------
                // Parameters for call to GetAttr
                // ------------------------------
                ParameterHolder_BusinessClass_Array qq_value = new ParameterHolder_BusinessClass_Array();
                theCurrentRecord.getAttr(i+10000, qq_value);
                x = (Array_Of_BusinessClass<BusinessClass>)qq_value.getObject();
                if (x != null) {
                    theCurrentRecord.reset(x, false);
                }
            }
        }

        //
        // Decrease the displayed number of records
        //
        this.getMaxIndex().setValue(this.getMaxIndex().getValue()-1);

        //
        // if the user deleted the highest indexed record
        // in the list, prepare to select the new highest
        // indexed record.
        //
        if (this.getRecordIndex().getValue() > this.getMaxIndex().getValue()) {
            this.getRecordIndex().setValue(this.getMaxIndex().getValue());
        }

        this.selectRecord(this.getRecordIndex());

        this.getStatusLine().setStatus(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_RECORD_DELETED)), this.getRecordIndex());

        return true;
    }

    /**
     * display<p>
     * Display<br>
     *     Display starts this window and displays it<br>
     *     according to the Preferences set in the info parameter.<br>
     *     If the info parameter is omitted, the Window uses<br>
     *     its default settings.<br>
     * <p>
     *     Returns the current result set when the user exits.<br>
     * <p>
     * @param info Type: LinkInfo (Input) (default in Forte: NIL)
     * @return Array_Of_BusinessClass<BusinessClass>
     */
    public Array_Of_BusinessClass<BusinessClass> display(LinkInfo info) {
        boolean trace30100 = LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100);
        //
        // Get a pointer to the description of how this window
        // should work in this case.
        //
        try {
            this.setWindowInfo(info);

            //
            // Perform initialiation which must occur before the window
            // opens.
            //
            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": About to do PreOpenInit.");
            }
            this.preOpenInit();

            //
            // open the window.
            //
            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": About to open window.");
            }
            this.openWindow();

            //
            // Perform initialiation which must occur after the window
            // opens.
            //
            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": About to do PostOpenInit.");
            }
            this.postOpenInit();

        }
        catch (CancelException ce) {
            throw ce;

        }
        catch (Throwable qq_ElseException) {
            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": Got Exception.");
            }
            if (!(this.getIsInTestMode())) {
                ErrorMgr.showErrors(null, "Error", qq_ElseException);;
            }
            else {
                ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                if (err != null) {
                    Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                }
            }
            this.getStatusLine().getStatusText().clear();
        }

        //
        // handle events
        //
        // ----------
        // Event Loop
        // ----------
        EventManager.startEventLoop();
        try {
            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": Registering Window Events.");
            }

            this.windowEvents();

            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": Registering Window with AppBroker.");
            }

            if (this.getWindowRegistered() == false) {
                this.getAppBroker().registerWindow(this);
                this.setWindowRegistered(true);
            }

            if (this.getqq_ToolBarGrid() != null) {
                this.repaint();
                WidthPolicy.set(this.getqq_ToolBarGrid(), Constants.SP_EXPLICIT);
            }

            this.beforeWindowIsVisible();
            this.repaint();

            if (this.getDoNotDisplayWindow() == false) {
                WindowDisplayState.set(this, Constants.DS_NORMAL);
            }

            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": Posting AfterOpenWindow.");
            }

            EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_OPEN_WINDOW );


            while (true) {

                UIutils.processGUIActions();
                EventHandle qq_currentEvent = EventManager.waitForEvent();
                if (qq_currentEvent == null)
                    break;
            }
        }
        //catch (Exception qq_error) {
            //Logger.getLogger("task.part.Event").error("Event loop terminated by unhandled exception: " + qq_error.getMessage(), qq_error );
            //throw qq_error;
        //}
        finally {
            EventManager.endEventLoop();
        }

        UserWindow.close(this);

        if (trace30100) {
            Logger.getLogger("task.part.logmgr").info(this.getWindowName());
            Logger.getLogger("task.part.logmgr").info(": Unregistering Window with AppBroker.");
        }

        this.getAppBroker().unRegisterWindow(this);

        if (this.getBusinessClient() != null && this.getWindowInfo().getResultSet() == null && !(this.getWindowInfo().getIsAggregateResultSet())) {
            if (trace30100) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(": Disposing of BusinessClient.");
            }
            this.getBusinessClient().dispose();
        }

        //
        // if interaction between window tracing is on, give
        // details about the returned result set.
        //
        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20)) {
            if (this.getResultSet() == null) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20) ) Logger.getLogger("task.part.logmgr").info(": Returning NIL ResultSet.");

            }
            else {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20) ) Logger.getLogger("task.part.logmgr").info(": Returning ResultSet with ");
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20) ) Logger.getLogger("task.part.logmgr").info( Integer.toString(this.getResultSet().size()));
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 20) ) Logger.getLogger("task.part.logmgr").info(" records.");

            }
        }

        //
        // Deparent all widgets to make garbage collection work
        // better.
        //
        Runtime.getRuntime().gc();

        //
        // return the result set (the WindowInfo.recordIndex
        // variable points to the selected record).
        //
        return this.getResultSet();
    }

    /**
     * displayCurrentRecord<p>
     * DisplayCurrentRecord<br>
     *     DisplayCurrentRecord is overridden in the generated<br>
     *     code to map the selected database record onto the<br>
     *     window.<br>
     * <p>
     */
    public void displayCurrentRecord() {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.DisplayCurrentRecord", this).getException();
    }

    /**
     * fieldValueChanged<p>
     * FieldValueChanged<br>
     *     FieldValueChanged is a noop method that the express<br>
     *     developer can override to recalculate custom fields<br>
     *     after the user has changed the value of another field.<br>
     * <p>
     * @param fieldNum Type: int
     * @param newValue Type: DataValue
     */
    public void fieldValueChanged(int fieldNum, DataValue newValue) {
    }

    /**
     * finishUp<p>
     * FinishUp<br>
     *     FinishUp is overridden to provide a method that exits<br>
     *     this window after saving any changes.<br>
     * <p>
     *     Confirm indicates if the method should warn the user<br>
     *       before closing.<br>
     * <p>
     *     Returns TRUE if window will exit, FALSE if user cancelled<br>
     *     operation.<br>
     * <p>
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    public boolean finishUp(boolean confirm) {
        int tempInteger = 0;
        this.setWindowIsExiting(true);

        //
        // We may need to save changes to the database if our
        // result set has modified records AND this window
        // does has a direct connection to the manager (we
        // can tell this by looking at the WindowInfo.ResultSet;
        // if the caller did not pass a result set, ie. it equals
        // nil, then we have a connection to the manager)
        //
        if (this.getIsResultSetModified() == true && !(this.getWindowInfo().getIsReadOnlyResultSet())) {

            //
            // if we need to save some changes, first consider
            // confirming this action with the user.
            //
            if (confirm == true) {
                // ----------------------------------------
                // Parameters for call to IsSaveAppropriate
                // ----------------------------------------
                ParameterHolder_integer qq_ccMode = new ParameterHolder_integer(tempInteger);
                boolean qq_IsSaveAppropriate = this.isSaveAppropriate(qq_ccMode);
                tempInteger = qq_ccMode.getInt();
                if (!(this.getWindowInfo().getIsAggregateResultSet()) && qq_IsSaveAppropriate) {
                    int answer = 0;
                    //
                    // request confirmation
                    //
                    answer = this.getAppBroker().confirmationDialog(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_CONFIRM_CLOSE)), this.getWindowName(), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.YES_OPTION, 50, this.getAppBroker().getPreferences().getConfirmClose());
                    //
                    // if the user says YES, save changes and close the
                    // window.  If the user says NO, don't save changes
                    // but still close the window.  If the user says
                    // CANCEL, don't close the window.
                    //
                    if (answer == JOptionPane.YES_OPTION) {
                        UIutils.requestFinalize(this, new EventHandle(this, ExpressClassWindow.cEVENT_SAVE_AFTER_FINISH_UP));;
                        return true;
                    }
                    else if (answer == JOptionPane.NO_OPTION) {
                        this.revertToSaved(false, false);
                        EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_FINISH_UP );
                        return true;
                    }
                    else {
                        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ABORTED_CLOSE) );
                        this.setWindowIsExiting(false);
                        return false;
                    }
                }
                else {
                    EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_FINISH_UP );
                    return true;
                }
                //
                // by default, close the window and save the changes
                //
            }
            else {
                if (this.getWindowInfo().getIsAggregateResultSet()) {
                    EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_FINISH_UP );
                }
                else {
                    UIutils.requestFinalize(this, new EventHandle(this, ExpressClassWindow.cEVENT_SAVE_AFTER_FINISH_UP));;
                }
                return true;
            }

            //
            // if there are no changes, just close the window.
            //
        }
        else {
            EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_FINISH_UP );
            return true;
        }
    }
    public boolean finishUp(){
      return this.finishUp(false);
    }

    /**
     * firstRecordIsNil<p>
     * FirstRecordIsNil<br>
     *     Returns TRUE if the given result set has exactly one record<br>
     *     and that record is NIL.<br>
     * <p>
     * @param data Type: Array_Of_BusinessClass<BusinessClass>
     * @return boolean
     */
    public boolean firstRecordIsNil(Array_Of_BusinessClass<BusinessClass> data) {
        if (data != null && data.size() == 1 && data.get(0) == null) {
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * firstRecordIsNotEmpty<p>
     * FirstRecordIsNotEmpty<br>
     *     Returns TRUE if the given result set has > 1 records,<br>
     *     or if it has only 1 record and that record's status <> EMPTY.<br>
     * <p>
     * @param data Type: Array_Of_BusinessClass<BusinessClass>
     * @return boolean
     */
    public boolean firstRecordIsNotEmpty(Array_Of_BusinessClass<BusinessClass> data) {
        if (data != null && (data.size() > 1 || (data.get(0) != null && data.get(0).getInstanceStatus() != BusinessClass.ST_EMPTY))) {
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * genericCommandEvents (Translation of Forte Event Handler)<p>
     * <p>
     * @return EventRegistration
     */
    public EventRegistration genericCommandEvents() {
        EventRegistration qq_resultRegistration = new EventRegistration();

        //
        // Handle new delayed save/validation
        //

        // -----------------
        // SaveAfterFinishUp
        // -----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this, ExpressClassWindow.cEVENT_SAVE_AFTER_FINISH_UP,
                new EventRegistrationCallback("ExpressClassWindow_SaveAfterFinishUp_this")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                try {
                                    if (ExpressClassWindow.this.save() != false) {
                                        EventManager.postEvent( ExpressClassWindow.this, ExpressContainerWindow.cEVENT_AFTER_FINISH_UP );
                                    }
                                }
                                catch (Throwable qq_ElseException) {
                                    ExpressClassWindow.this.setWindowIsExiting(false);
                                   
                                    throw (RuntimeException)qq_ElseException;
                                }
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // --------------
        // SaveAfterClear
        // --------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this, ExpressClassWindow.cEVENT_SAVE_AFTER_CLEAR,
                new EventRegistrationCallback("ExpressClassWindow_SaveAfterClear_this")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                if (ExpressClassWindow.this.save() != false) {
                                    ExpressClassWindow.this.postClearResultSet();
                                }
       
                                //
                                // handle window related commands
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------
        // <CancelMC>.activate
        // -------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_CancelMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_CancelMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.quit(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmCancel().getValue());
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ------------------
        // <CloseMC>.activate
        // ------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_CloseMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_CloseMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.finishUp(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmClose().getValue());
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // --------------------
        // <ExitAllMC>.activate
        // --------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_ExitAllMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_ExitAllMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                //
                                // when the user selects Exit All, let the AppBroker object
                                // handle closing all the windows in the application,
                                // including this one.
                                //
                                ExpressClassWindow.this.getAppBroker().exitAll();
       
                                //
                                // when the user selects the Preferences command, ask the
                                // AppBroker to display the Preferences window.
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ------------------------
        // <PreferencesMC>.activate
        // ------------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_PreferencesMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_PreferencesMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.getAppBroker().preferencesDialog();
       
                                //
                                // Handle the result set commands
                                //
                                //
                                // Clear the result set
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ------------------
        // <ClearMC>.activate
        // ------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_ClearMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_ClearMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.clearResultSet(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmClear().getValue());
       
                                //
                                // Save changes
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -----------------
        // <SaveMC>.activate
        // -----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_SaveMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_SaveMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.save();
       
                                //
                                // Insert a record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------
        // <InsertMC>.activate
        // -------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_InsertMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_InsertMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.insertRecordIntoResultSet((BusinessClass)null);
       
                                //
                                // Delete a record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------
        // <DeleteMC>.activate
        // -------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_DeleteMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_DeleteMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.deleteRecordFromResultSet(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmDelete().getValue());
       
                                //
                                // Perform a Search
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------
        // <SearchMC>.activate
        // -------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_SearchMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_SearchMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.search(ExpressClassWindow.this.getSearchCriteria());
       
                                //
                                // Set Search Mode
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------------
        // <ModeMC>.afterValueChange
        // -------------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_ModeMC(), "AfterValueChange",
                new EventRegistrationCallback("MenuList_AfterValueChange_getqq_ModeMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                // Tell SelectRecord not to validate current record.
                                ExpressClassWindow.this.getAppBroker().setSkipSelectRecordValidate(true);
                                try {
                                    ExpressClassWindow.this.setMode(ExpressClassWindow.this.getModeMC(), ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmMode().getValue());
                                    ExpressClassWindow.this.getAppBroker().setSkipSelectRecordValidate(false);
                                }
                                catch (Throwable qq_ElseException) {
                                    ExpressClassWindow.this.getAppBroker().setSkipSelectRecordValidate(false);
                                    throw (RuntimeException)qq_ElseException;
                                }
       
                                //
                                // Revert changes
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------
        // <RevertMC>.activate
        // -------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_RevertMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_RevertMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.revertToSaved(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmRevert().getValue(), true);
       
                                //
                                // Handle the scroll commands
                                //
       
                                //
                                // Scroll to First record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ------------------
        // <FirstMC>.activate
        // ------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_FirstMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_FirstMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.scrollToFirst();
       
                                //
                                // Scroll to Last record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -----------------
        // <LastMC>.activate
        // -----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_LastMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_LastMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.scrollToLast();
       
                                //
                                // Scroll to Next record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -----------------
        // <NextMC>.activate
        // -----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_NextMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_NextMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.scrollToNext();
       
                                //
                                // Scroll to Previous record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -----------------
        // <PrevMC>.activate
        // -----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_PrevMC(), "Activate",
                new EventRegistrationCallback("MenuCommand_Activate_getqq_PrevMC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.scrollToPrev();
       
                                //
                                // Clear the result set
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ---------------
        // <ClearTC>.click
        // ---------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_ClearTC(), "Click",
                new EventRegistrationCallback("PictureButton_Click_getqq_ClearTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.clearResultSet(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmClear().getValue());
       
                                //
                                // Save changes
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // --------------
        // <SaveTC>.click
        // --------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_SaveTC(), "Click",
                new EventRegistrationCallback("PictureButton_Click_getqq_SaveTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.save();
       
                                //
                                // Insert a record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <InsertTC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_InsertTC(), "Click",
                new EventRegistrationCallback("PictureButton_Click_getqq_InsertTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.insertRecordIntoResultSet((BusinessClass)null);
       
                                //
                                // Delete a record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <DeleteTC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_DeleteTC(), "Click",
                new EventRegistrationCallback("PictureButton_Click_getqq_DeleteTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.deleteRecordFromResultSet(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmDelete().getValue());
       
                                //
                                // Perform a Search
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <SearchTC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_SearchTC(), "Click",
                new EventRegistrationCallback("PictureButton_Click_getqq_SearchTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.search(ExpressClassWindow.this.getSearchCriteria());
       
                                //
                                // Set Search Mode
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // -------------------------
        // <ModeTC>.afterValueChange
        // -------------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_ModeTC(), "AfterValueChange",
                new EventRegistrationCallback("PaletteList_AfterValueChange_getqq_ModeTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                // Tell SelectRecord not to validate current record.
                                ExpressClassWindow.this.getAppBroker().setSkipSelectRecordValidate(true);
                                try {
                                    ExpressClassWindow.this.setMode(ExpressClassWindow.this.getModeTC(), ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmMode().getValue());
                                    ExpressClassWindow.this.getAppBroker().setSkipSelectRecordValidate(false);
                                }
                                catch (Throwable qq_ElseException) {
                                    ExpressClassWindow.this.getAppBroker().setSkipSelectRecordValidate(false);
                                   
                                    throw (RuntimeException)qq_ElseException;
                                }
       
                                //
                                // Scroll to specific index
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // --------------------------
        // <IndexTC>.afterValueChange
        // --------------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_IndexTC(), "AfterValueChange",
                new EventRegistrationCallback("DataField_AfterValueChange_getqq_IndexTC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.scrollToIndex(ExpressClassWindow.this.getIndexTC());
       
                                //
                                // handle window related commands
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <CancelBC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_CancelBC(), "Click",
                new EventRegistrationCallback("PushButton_Click_getqq_CancelBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.quit(false);
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ------------
        // <OKBC>.click
        // ------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_OKBC(), "Click",
                new EventRegistrationCallback("PushButton_Click_getqq_OKBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.finishUp(false);
       
                                //
                                // Clear the result set
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ---------------
        // <ClearBC>.click
        // ---------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_ClearBC(), "Click",
                new EventRegistrationCallback("PushButton_Click_getqq_ClearBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.clearResultSet(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmClear().getValue());
       
                                //
                                // Perform a Search
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <SearchBC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_SearchBC(), "Click",
                new EventRegistrationCallback("PushButton_Click_getqq_SearchBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.search(ExpressClassWindow.this.getSearchCriteria());
       
                                //
                                // Insert a record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <InsertBC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_InsertBC(), "Click",
                new EventRegistrationCallback("PushButton_Click_getqq_InsertBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.insertRecordIntoResultSet((BusinessClass)null);
       
                                //
                                // Delete a record
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // ----------------
        // <DeleteBC>.click
        // ----------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_DeleteBC(), "Click",
                new EventRegistrationCallback("PushButton_Click_getqq_DeleteBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.deleteRecordFromResultSet(ExpressClassWindow.this.getAppBroker().getPreferences().getConfirmDelete().getValue());
       
                                //
                                // Scroll to specific index
                                //
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );


        // --------------------------
        // <IndexBC>.afterValueChange
        // --------------------------
        qq_resultRegistration.addRegistration( ClientEventManager.register(
                this.getqq_IndexBC(), "AfterValueChange",
                new EventRegistrationCallback("DataField_AfterValueChange_getqq_IndexBC")
                {
                    public boolean handleEvent(EventHandle qq_currentEvent) {
                        boolean qq_HandlerResult = true;
                        try {
                            try {
                                CursorMgr.startEvent();
                                // ================ Begin Forte Event Handler Translation ================
                                ExpressClassWindow.this.scrollToIndex(ExpressClassWindow.this.getIndexBC());
       
                                }
                                catch (CancelException ce) {
                throw ce;
       
                                }
                                catch (Throwable qq_ElseException) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(ExpressClassWindow.this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 100) ) Logger.getLogger("task.part.logmgr").info(": Got Exception.");
                if (ExpressClassWindow.this.getWindowIsExiting()) {
                    // Exception exits window if happens after user selects
                    // Close/Quit/Exit.
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else if (!(ExpressClassWindow.this.getIsInTestMode())) {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorMgr.showErrors(null, "Error", qq_ElseException);;
                }
                else {
                    ExpressClassWindow.this.setWindowIsExiting(false);
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        Logger.getLogger("task.part.logmgr").info(err.getMessageText());
                    }
                }
                ExpressClassWindow.this.getStatusLine().getStatusText().clear();
                                }
                        // ================= End Forte Event Handler Translation =================
                        }
                        finally {
                            CursorMgr.endEvent();
                        }
                        return qq_HandlerResult;
                    }
                }) );

        // ================ Begin Forte Post Register Translation ================
       
        // ================= End Forte Post Register Translation =================
        return qq_resultRegistration;
    }

    /**
     * getAppData<p>
     * GetAppData<br>
     *     GetAppData returns the application data object passed<br>
     *     to this window.  The object will be whatever the<br>
     *     express developer has customized it to be, or nil if<br>
     *     it has not been customized.<br>
     * <p>
     * @return Object
     */
    public Object getAppData() {
        if (this.getWindowInfo() != null) {
            return this.getWindowInfo().getAppData();
        }
        else {
            return null;
        }
    }

    /**
     * getCurRec<p>
     * GetCurRec<br>
     *      GetCurRec returns the currently selected record as<br>
     *     a BusinessClass (use GetCurrentRecord in custom code).<br>
     * <p>
     * @return BusinessClass
     */
    public BusinessClass getCurRec() {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.GetCurRec", this).getException();
    }

    /**
     * getDependentData<p>
     * GetDependentData<br>
     *     GetDependentData fills in missing columns in records<br>
     *     passed to other windows and returns the corrected<br>
     *     records.<br>
     * <p>
     * @param data Type: Array_Of_BusinessClass<BusinessClass>
     * @param template Type: BusinessQuery
     * @param assocNum Type: int
     * @return Array_Of_BusinessClass<BusinessClass>
     */
    @SuppressWarnings("unchecked")
  public Array_Of_BusinessClass<BusinessClass> getDependentData(Array_Of_BusinessClass<BusinessClass> data, BusinessQuery template, int assocNum) {
        Array_Of_BusinessClass<BusinessClass> newData = null;

        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
            Logger.getLogger("task.part.logmgr").info("    GetDependentData(Data: Array of ");
            if (data != null && data.size() > 0) {
                Logger.getLogger("task.part.logmgr").info(data.get(0).getClass().getSimpleName());
                Logger.getLogger("task.part.logmgr").info(" - ");
                Logger.getLogger("task.part.logmgr").info( Integer.toString(data.size()));
                Logger.getLogger("task.part.logmgr").info(" rows, ");
            }
            else if (data == null) {
                Logger.getLogger("task.part.logmgr").info("BusinessClass - NIL, ");
            }
            else {
                Logger.getLogger("task.part.logmgr").info("BusinessClass - 0 rows, ");
            }
            Logger.getLogger("task.part.logmgr").info("Template: ");
            Logger.getLogger("task.part.logmgr").info(template.getClass().getSimpleName());
            Logger.getLogger("task.part.logmgr").info(", AssocNum: ");
            Logger.getLogger("task.part.logmgr").info( Integer.toString(assocNum));
            Logger.getLogger("task.part.logmgr").info(")");
            if (this.getWindowInfo().getResultSet() == null) {
                Logger.getLogger("task.part.logmgr").info("    WindowInfo.ResultSet=NIL");
            }
        }
        //
        // if a result set was not passed into this window, then
        // we must have access to the manager, so requery directly.
        //
        if (this.getWindowInfo().getResultSet() == null) {
            //
            // if the child window is requesting more information on
            // records that this window manages, just requery each
            // record with the child window's template mixed in.
            //
            if (assocNum == 0) {
                //
                // Records do not come from an association, so both
                // windows are based on the same database table.
                // Search for missing columns in all the given records.
                //
                if (data != null) {
                    for (BusinessClass record : data) {
                        //
                        // If this record is not a newly inserted record,
                        // look for it's missing attribute in the database.
                        //
                        if (record.getInstanceStatus() != BusinessClass.ST_INSERT && record.getInstanceStatus() != BusinessClass.ST_EMPTY) {
                            //
                            // Prepare the template to locate this record in the db.
                            //
                            template.clearConstraints(false);

                            if (record != null && record.getInstanceKey() != null) {
                                for (int i = 1; i <= template.getNumKeyAttrs(); i++) {
                                    template.addConstraint(i, ConstraintOperation.OP_EQ, record.getInstanceKey().getValues().get(i-1));
                                }
                            }

                            //
                            // look for the record with all the required columns
                            //
                            if (this.getBusinessClient().transActive()) {
                                newData = this.getBusinessClient().select(template, ConcurrencyMgr.TR_CONTINUE);
                            }
                            else {
                                newData = this.getBusinessClient().select(template, ConcurrencyMgr.TR_START);
                            }

                            //
                            // Merge the new columns in with the old columns
                            //
                            if (newData != null) {
                                for (BusinessClass newRecord : newData) {
                                    for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_DB); i++) {
                                        if (template.hasAttr(i) && record.getAttr(i) == null && newRecord.getAttr(i) != null) {
                                            record.setAttrValue(i, newRecord.getAttr(i));
                                        }
                                    }
                                    //
                                    // handle to-one cases (assumes to one data is read only).
                                    //
                                    for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_FOREIGN); i++) {
                                        if (template.hasAttr(i+10000) && (template.getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) <= 0) {
                                            BusinessClass newrec = null;
                                            // ------------------------------
                                            // Parameters for call to GetAttr
                                            // ------------------------------
                                            ParameterHolder_BusinessClass qq_value = new ParameterHolder_BusinessClass();
                                            newRecord.getAttr(i+10000, qq_value);
                                            newrec = (BusinessClass)qq_value.getObject();
                                            if (newrec != null) {
                                                record.setAttr(i+10000, newrec);
                                            }
                                        }
                                    }
                                    //
                                    // handle to-many cases
                                    //
                                    for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_FOREIGN); i++) {
                                        if (template.hasAttr(i+10000) && (template.getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) > 0) {
                                            Array_Of_BusinessClass<BusinessClass> newassoc = null;
                                            Array_Of_BusinessClass<BusinessClass> oldassoc = null;
                                            // ------------------------------
                                            // Parameters for call to GetAttr
                                            // ------------------------------
                                            ParameterHolder_BusinessClass_Array qq_value = new ParameterHolder_BusinessClass_Array();
                                            record.getAttr(i+10000, qq_value);
                                            oldassoc = (Array_Of_BusinessClass<BusinessClass>)qq_value.getObject();
                                            if (oldassoc != null) {
                                                oldassoc.clear();
                                            }
                                            // ------------------------------
                                            // Parameters for call to GetAttr
                                            // ------------------------------
                                            ParameterHolder_BusinessClass_Array qq_value1 = new ParameterHolder_BusinessClass_Array();
                                            newRecord.getAttr(i+10000, qq_value1);
                                            newassoc = (Array_Of_BusinessClass<BusinessClass>)qq_value1.getObject();
                                            if (newassoc != null && oldassoc != null) {
                                                //
                                                // Insert these associated records in existing array for that
                                                // association in 'record' (don't want to disconnect this result
                                                // set with one known to child window).
                                                //
                                                if (newassoc != null) {
                                                    for (BusinessClass rec : newassoc) {
                                                        oldassoc.add(rec);
                                                    }
                                                }
                                            }
                                            else if (newassoc != null && oldassoc == null) {
                                                record.setAttr(i+10000, newassoc);
                                            }
                                        }
                                    }
                                    // handle to-many cases
                                }
                            }
                            // Merge the new columns in with the old columns
                        }
                        // If this record is not a newly inserted record...
                    }
                }
                // Search for missing columns in all the given records.

                //
                // if the child window is requesting more information on
                // associated records, requery this window's selected
                // record to get the required associated columns.
                //
            }
            else {
                //
                // get a record template for the current window.
                //
                BusinessQuery criteria = this.getRecordTemplate();
                criteria.clearConstraints(false);

                //
                // store original criteria before changing it.
                //
                BusinessQuery previousCriteria = criteria.getQuery(assocNum);

                //
                // Minimize the number of queries we need to run.
                // Temporarily remove the old criteria from other associations.
                //
                Array_Of_BusinessQuery<BusinessQuery> tmpForeignClasses = criteria.getForeignClasses();
                criteria.setForeignClasses(null);

                //
                // Request the linked window's data. Merge the current criteria
                // for businessClass 'AssocNum' with that found in 'template'.
                //
                criteria.addAttr(assocNum, template);
                if (previousCriteria != null) {
                    criteria.addAttr(assocNum, previousCriteria);
                    // merge
                }

                if (this.getRecordIndex() != null && this.getCurRec() != null && this.getCurRec().getInstanceKey() != null) {
                    //
                    // Add keys for current record so will reselect this record.
                    //
                    for (int i = 1; i <= this.getRecordTemplate().getNumKeyAttrs(); i++) {
                        criteria.addConstraint(i, ConstraintOperation.OP_EQ, this.getCurRec().getInstanceKey().getValues().get(i-1));
                    }

                    //
                    // find the record (and it's associated records)
                    //
                    try {
                        if (this.getBusinessClient().transActive()) {
                            newData = this.getBusinessClient().select(criteria, ConcurrencyMgr.TR_CONTINUE);
                        }
                        else {
                            newData = this.getBusinessClient().select(criteria, ConcurrencyMgr.TR_START);
                        }
                        //
                        // restore original criteria for foreign classes
                        //
                    }
                    catch (Throwable qq_ElseException) {
                        criteria.setForeignClasses(tmpForeignClasses);
                       
                        throw (RuntimeException)qq_ElseException;
                    }
                }

                //
                // replace the given records with the fully fetched records
                //
                data.clear();
                if (newData != null && newData.get(0) != null) {
                    if ((criteria.getForeignAttrMult(assocNum)&BusinessQuery.ASSOC_MULT_TO_MANY) > 0) {
                        Array_Of_BusinessClass<BusinessClass> a = null;
                        // ------------------------------
                        // Parameters for call to GetAttr
                        // ------------------------------
                        ParameterHolder_BusinessClass_Array qq_value = new ParameterHolder_BusinessClass_Array();
                        newData.get(0).getAttr(assocNum, qq_value);
                        a = (Array_Of_BusinessClass<BusinessClass>)qq_value.getObject();
                        if (a != null) {
                            for (BusinessClass rec : a) {
                                data.add(rec);
                            }
                        }

                    }
                    else {
                        BusinessClass b = null;
                        // ------------------------------
                        // Parameters for call to GetAttr
                        // ------------------------------
                        ParameterHolder_BusinessClass qq_value = new ParameterHolder_BusinessClass();
                        newData.get(0).getAttr(assocNum, qq_value);
                        b = (BusinessClass)qq_value.getObject();
                        // bug 37299 c : BusinessClass;
                        // bug 37299 GetCurRec().GetAttr(AssocNum, c );
                        // bug 37299 if c = NIL then
                        this.getCurRec().setAttr(assocNum, b);
                        // bug 37299 end if;
                        data.add(b);
                    }
                }

                //
                // restore original criteria
                //
                criteria.setForeignClasses(tmpForeignClasses);
            }

            //
            // if this window does not have access to a manager, pass
            // this request for dependent data to its parent.
            //
        }
        else {
            if (assocNum == 0) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
                    Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                    Logger.getLogger("task.part.logmgr").info(".GetDependentData2: calling ");
                    Logger.getLogger("task.part.logmgr").info(this.getWindowInfo().getParentWindow().getWindowName());
                    Logger.getLogger("task.part.logmgr").info(".GetDependentData");
                }
                data = this.getWindowInfo().getParentWindow().getDependentData(data, template, this.getWindowInfo().getAssocNum());
            }
            else {
                newData = new Array_Of_BusinessClass<BusinessClass>();
                newData.set(0, this.getCurRec());
                //
                // Clone this window's current record so we don't modify the
                // actual current record when it gets passed to GetDependentData
                // below.
                //
                if (newData.get(0) != null) {
                    if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
                        Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                        Logger.getLogger("task.part.logmgr").info(".GetDependentData: doing newData[1].Clone()");
                    }

                    newData.set(0, CloneHelper.clone(newData.get(0), false));
                    //
                    // Also clone the to-many (array) reference attributes.
                    //
                    for (int i = 1; i <= this.getRecordTemplate().getNumAttrs(BusinessQuery.ATTR_FOREIGN); i++) {
                        if ((this.getRecordTemplate().getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) > 0) {
                            Array_Of_BusinessClass<BusinessClass> tmpAry = null;
                            // ------------------------------
                            // Parameters for call to GetAttr
                            // ------------------------------
                            ParameterHolder_BusinessClass_Array qq_value = new ParameterHolder_BusinessClass_Array();
                            newData.get(0).getAttr(i+10000, qq_value);
                            tmpAry = (Array_Of_BusinessClass<BusinessClass>)qq_value.getObject();
                            if (tmpAry != null) {
                                tmpAry = CloneHelper.clone(tmpAry, false);
                                newData.get(0).setAttr(i+10000, tmpAry);
                            }
                        }
                    }
                }

                //
                // As long as the current record in this window has not been
                // recently inserted, pass it to its parent to see if the
                // parent can find the missing columns.
                //
                if (newData.get(0) != null && newData.get(0).getInstanceStatus() != BusinessClass.ST_INSERT && newData.get(0).getInstanceStatus() != BusinessClass.ST_EMPTY) {
                    BusinessQuery criteria = this.getRecordTemplate();
                    criteria.clearConstraints(false);
                    BusinessClass curRec = newData.get(0);

                    //
                    // store original criteria before changing it.
                    //
                    BusinessQuery previousCriteria = criteria.getQuery(assocNum);

                    //
                    // Minimize the number of queries we need to run.
                    // Temporarily remove the old criteria from other associations.
                    //
                    Array_Of_BusinessQuery<BusinessQuery> tmpForeignClasses = criteria.getForeignClasses();
                    criteria.setForeignClasses(null);

                    //
                    // Request the linked window's data.  Merge the current
                    // criteria for 'AssocNum' with that found in 'template'.
                    //
                    criteria.addAttr(assocNum, template);
                    if (previousCriteria != null) {
                        criteria.addAttr(assocNum, previousCriteria);
                        // merge
                    }

                    if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
                        Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                        Logger.getLogger("task.part.logmgr").info(".GetDependentData2: calling ");
                        Logger.getLogger("task.part.logmgr").info(this.getWindowInfo().getParentWindow().getWindowName());
                        Logger.getLogger("task.part.logmgr").info(".GetDependentData");
                    }
                    try {
                        newData = this.getWindowInfo().getParentWindow().getDependentData(newData, criteria, this.getWindowInfo().getAssocNum());
                        //
                        // restore original criteria for foreign classes
                        //
                    }
                    catch (Throwable qq_ElseException) {
                        criteria.setForeignClasses(tmpForeignClasses);
                       
                        throw (RuntimeException)qq_ElseException;
                    }

                    if (newData != null) {
                        //
                        // Compare record keys to make sure we update correct record in
                        // window (fetched records may be in different order from those in window).
                        //
                        int updrecno = this.getRecordIndex().getValue();
                        if (curRec.getInstanceKey() != null) {
                            if (newData.get(this.getRecordIndex().getValue()-1) == null || curRec.getInstanceKey().compare(newData.get(this.getRecordIndex().getValue()-1).getInstanceKey()) != BusinessKey.CMP_EQ) {
                                //
                                // search result set for row with same key value as current
                                // row in window.
                                //
                                for (int i = 1; i <= newData.size(); i++) {
                                    if (newData.get(i-1) != null && newData.get(i-1).getInstanceKey().compare(curRec.getInstanceKey()) == BusinessKey.CMP_EQ) {
                                        updrecno = i;
                                        break;
                                    }
                                }
                            }
                        }

                        if ((criteria.getForeignAttrMult(assocNum)&BusinessQuery.ASSOC_MULT_TO_MANY) > 0) {
                            Array_Of_BusinessClass<BusinessClass> a = null;
                            if (newData.get(updrecno-1) != null) {
                                // ------------------------------
                                // Parameters for call to GetAttr
                                // ------------------------------
                                ParameterHolder_BusinessClass_Array qq_value = new ParameterHolder_BusinessClass_Array();
                                newData.get(updrecno-1).getAttr(assocNum, qq_value);
                                a = (Array_Of_BusinessClass<BusinessClass>)qq_value.getObject();
                            }
                            if (a != data) {
                                data.clear();
                                if (a != null) {
                                    for (BusinessClass rec : a) {
                                        data.add(rec);
                                    }
                                }
                            }
                            else {
                                // Nothing to do. ParentWindow.GetDependentData must
                                // have already done the above appends.
                            }
                        }
                        else {
                            BusinessClass b = null;
                            if (newData.get(updrecno-1) != null) {
                                // ------------------------------
                                // Parameters for call to GetAttr
                                // ------------------------------
                                ParameterHolder_BusinessClass qq_value = new ParameterHolder_BusinessClass();
                                newData.get(updrecno-1).getAttr(assocNum, qq_value);
                                b = (BusinessClass)qq_value.getObject();
                            }
                            this.getCurRec().setAttr(assocNum, b);
                            data.clear();
                            data.add(b);
                        }
                    }
                    else {
                        data.clear();
                    }

                    //
                    // restore original criteria for foreign classes.
                    //
                    criteria.setForeignClasses(tmpForeignClasses);
                }
            }
        }

        //
        // return the corrected records
        //
        return data;
    }

    /**
     * getFieldForAttr<p>
     * GetFieldForAttr<br>
     *      Generated windows, except outline windows, will have a<br>
     *     generated version of this method that is specific to the<br>
     *     window.  That method will over-ride this one.<br>
     * <p>
     * @param attr Type: int
     * @return JComponent
     */
    public JComponent getFieldForAttr(int attr) {
        return null;
    }

    /**
     * getFocusField<p>
     * GetFocusField<br>
     *     GetFocusField returns the focus field for the<br>
     *     current window, even if it is running as a nested<br>
     *     or folder link in another window.<br>
     * <p>
     * @return JComponent
     */
    public Component getFocusField() {
        Component w = this;

        while (((Component)Parent.get(w)) != null) {
            w = (Component)Parent.get(w);
        }

        return ((JFrame)w).getFocusOwner();
    }

    /**
     * getInitialRecords<p>
     * GetInitialRecords<br>
     *     GetInitialRecords returns the initial result set<br>
     *     passed into this window, or nil if none was passed<br>
     *     in.<br>
     * <p>
     * @return Array_Of_BusinessClass<BusinessClass>
     */
    public Array_Of_BusinessClass<BusinessClass> getInitialRecords() {
        if (this.getWindowInfo() != null) {
            return this.getWindowInfo().getResultSet();
        }
        else {
            return null;
        }
    }

    /**
     * getInitialSearch<p>
     * GetInitialSearch<br>
     *     GetInitialSearch returns the initial Search criteria<br>
     *     passed into this window, or nil if none was passed<br>
     *     in.<br>
     * <p>
     * @return BusinessQuery
     */
    public BusinessQuery getInitialSearch() {
        if (this.getWindowInfo() != null) {
            return this.getWindowInfo().getInitialSearch();
        }
        else {
            return null;
        }
    }

    /**
     * getParentCurrentRecord<p>
     * GetParentCurrentRecord<br>
     *     GetParentCurrentRecord returns the current record<br>
     *     in this window's parent window (if it has one).<br>
     * <p>
     * @return BusinessClass
     */
    public BusinessClass getParentCurrentRecord() {
        if (this.getWindowInfo() != null && this.getWindowInfo().getParentWindow() != null) {
            return this.getWindowInfo().getParentWindow().getCurRec();
        }
        else {
            return null;
        }
    }

    /**
     * getParentWindow<p>
     * GetInitialRecords<br>
     *     GetInitialRecords returns the initial result set<br>
     *     passed into this window, or nil if none was passed<br>
     *     in.<br>
     * <p>
     * @return ExpressClassWindow
     */
    public ExpressClassWindow getParentWindow() {
        if (this.getWindowInfo() != null) {
            return this.getWindowInfo().getParentWindow();
        }
        else {
            return null;
        }
    }

    /**
     * getRecordTemplate<p>
     * GetRecordTemplate<br>
     *      GetRecordTemplate builds a query tree based on the fields<br>
     *     this window displays.<br>
     * <p>
     *      Returns the query tree built from this window's<br>
     *     values.<br>
     * <p>
     * @param template Type: BusinessQuery (Input) (default in Forte: NIL)
     * @return BusinessQuery
     */
    public BusinessQuery getRecordTemplate(BusinessQuery template) {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.GetRecordTemplate", this).getException();
    }

    /**
     * getSearchCriteria<p>
     * GetSearchCriteria<br>
     *      GetSearchCriteria builds a query tree based on this window's<br>
     *     values.<br>
     * <p>
     *      Returns the query tree built from this window's<br>
     *     values.<br>
     * <p>
     * @return BusinessQuery
     */
    public BusinessQuery getSearchCriteria() {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.GetSearchCriteria", this).getException();
    }

    /**
     * hasAllRequiredColumns<p>
     * HasAllRequiredColumns<br>
     *     HasAllRequiredColumns returns TRUE if the given class has<br>
     *     all the columns this window requires for display.<br>
     * <p>
     * @param record Type: BusinessClass
     * @param template Type: BusinessQuery
     * @return boolean
     */
    public boolean hasAllRequiredColumns(BusinessClass record, BusinessQuery template) {
        if (template == null) {
            return true;
        }
        if (record == null) {
            return false;
        }

        //
        // Check the simple attributes
        //
        for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_DB); i++) {
            if (template.hasAttr(i) && record.getAttr(i) == null) {
                return false;
            }
        }

        //
        // Check x to One Foreign attributes
        //
        for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_FOREIGN); i++) {
            if (template.hasAttr(i+10000) && (template.getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) <= 0) {
                BusinessClass rec = null;
                // ------------------------------
                // Parameters for call to GetAttr
                // ------------------------------
                ParameterHolder_BusinessClass qq_value = new ParameterHolder_BusinessClass();
                record.getAttr(i+10000, qq_value);
                rec = (BusinessClass)qq_value.getObject();
                if (rec == null) {
                    //
                    // If optional association, then we may have "rec=NIL" because (outer
                    // join) query was run and nothing selected, or else no query was run
                    // by the calling window.  We can't tell which, so check if the join
                    // fields for the optional association are present in the parent window
                    // record; if they're there, then assume that a query was run and
                    // nothing was selected, so that required column is present (it's just NIL).
                    //
                    if ((template.getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_OPTIONAL) > 0) {
                        Array_Of_QueryAttrMap<QueryAttrMap> joinAttrs = template.getForeignAttrMap(i+10000);
                        if (joinAttrs != null) {
                            for (QueryAttrMap attrPair : joinAttrs) {
                                if (record.getAttr(attrPair.getLocal()) == null) {
                                    return false;
                                }
                            }
                        }
                    }
                    else {
                        return false;
                    }
                }
                else {
                    //
                    // if we have the record, we still may be missing
                    // columns in that record.  Check for those.
                    //
                    if (!(this.hasAllRequiredColumns(rec, template.getQuery(i+10000)))) {
                        return false;
                    }
                }
            }
        }

        return true;
    }

    /**
     * hasParentMultiplicity<p>
     * HasParentMultiplicity<br>
     *     Check the multiplicity (to-1, 1-n, etc) of the BusinessClass<br>
     *     this window is based on and compare it with argument "mult".<br>
     * <p>
     *   Parameters:<br>
     *     mult - will be one of the following values:<br>
     *       BusinessQuery.ASSOC_MULT_ONE_MASK - To-one association (including<br>
     *         optional). This window's businessclass has a "To-one"<br>
     *         association with the parent window's businessclass.<br>
     *       BusinessQuery.ASSOC_MULT_TO_ONE - To-one association (not optional).<br>
     *         This window's businessclass has a non-optional "To-one"<br>
     *         association with the parent window's businessclass.<br>
     *       BusinessQuery.ASSOC_MULT_TO_MANY - To-many association.<br>
     *         This window's businessclass has a "To-many"<br>
     *         association with the parent window's businessclass.<br>
     *       BusinessQuery.ASSOC_AGGREGATION - Aggregate association. TRUE if<br>
     *         the current window's businessclass is an aggregate-component<br>
     *         of the parent window's class.<br>
     *       BusinessQuery.ASSOC_MULT_OPTIONAL - Optional To-one association.<br>
     *         This window's businessclass has an optional "To-one"<br>
     *         association with the parent window's businessclass.<br>
     *   Returns:<br>
     *     TRUE if the association multiplicity matches the "mult" parameter;<br>
     *     FALSE otherwise.<br>
     * <p>
     * @param mult Type: int
     * @return boolean
     */
    public boolean hasParentMultiplicity(int mult) {
        boolean ret = false;

        if (this.getWindowInfo() != null && this.getWindowInfo().getParentWindow() != null && this.getWindowInfo().getAssocNum() != 0 && this.getWindowInfo().getParentWindow().getRecordTemplate() != null) {
            int mask = this.getWindowInfo().getParentWindow().getRecordTemplate().getForeignAttrMult(this.getWindowInfo().getAssocNum());
            if ((mask&mult) > 0) {
                ret = true;
            }
        }

        return ret;
    }

    /**
     * hasParentWindowMode<p>
     * HasParentWindowMode<br>
     *     Check parent windows for the given mode.  Returns TRUE<br>
     *     if a parent window is in this mode; FALSE otherwise.<br>
     * <p>
     * @param mode Type: int
     * @return boolean
     */
    public boolean hasParentWindowMode(int mode) {
        ExpressClassWindow w = this.getParentWindow();
        boolean foundMode = false;

        while (w != null) {
            if (w.getWindowMode() != null && w.getWindowMode().getValue() == mode) {
                foundMode = true;
                break;
            }
            w = w.getParentWindow();
        }

        return foundMode;
    }

    /**
     * initializeDates<p>
     * InitializeDates<br>
     *     Check the simple attributes for date fields and<br>
     *     initialize them to today's date & time if they<br>
     *     have the default (this will avoid errors on<br>
     *     Microsoft SQL Server). If the record is empty, also<br>
     *     perform a LogAttr on the date field.<br>
     * <p>
     * @param record Type: BusinessClass
     * @param template Type: BusinessQuery
     */
    public void initializeDates(BusinessClass record, BusinessQuery template) {
        DateTimeNullable emptyDate = new DateTimeNullable();
        int recStat = record.getInstanceStatus();

        for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_DB); i++) {
            DataValue attr = record.getAttr(i);
            if (attr != null && attr instanceof DateTimeNullable) {
                if (recStat == BusinessClass.ST_EMPTY || recStat == BusinessClass.ST_INSERT) {
                    this.getBusinessClient().logAttr(record, i);
                }
                if (((DateTimeNullable)attr).getIsNull() || ((DateTimeNullable)attr).isEqual(emptyDate).getValue()) {
                    //
                    // If corresponding field has a date template defined,
                    // use that format for setting the current date & time
                    // (for example, this will set only the date if template
                    // doesn't call for time).
                    //
                    JComponent fld = this.getFieldForAttr(i);
                    if (fld != null && fld instanceof DataField && DateTemplate.get(((DataField)fld)) != null) {
                        ((DateTimeNullable)attr).setCurrent();
                        DateFormat fmt = new DateFormat(DateTemplate.get(((DataField)fld)));
                        TextData dateTxt = fmt.formatDate((DateTimeNullable)attr);

                        ((DateTimeNullable)attr).decodeValue(dateTxt, fmt);
                    }
                    else {
                        ((DateTimeNullable)attr).setCurrent();
                    }
                }
            }
        }

        //
        // We don't want date initialization to make the Record look like
        // the User has typed values in it. So, if LogAttr changed the
        // recordStatus from EMPTY, set it back.
        //
        if (recStat == BusinessClass.ST_EMPTY && record.getInstanceStatus() != BusinessClass.ST_EMPTY) {
            record.setInstanceStatus(BusinessClass.ST_EMPTY);
        }

        //
        // Check x to One Foreign attributes for date fields and
        // initialize them to today's date & time if they
        // have the default (this will avoid errors on
        // Microsoft SQL Server)
        //
        for (int i = 1; i <= template.getNumAttrs(BusinessQuery.ATTR_FOREIGN); i++) {
            if (template.hasAttr(i+10000) && (template.getForeignAttrMult(i+10000)&BusinessQuery.ASSOC_MULT_TO_MANY) <= 0) {
                BusinessClass rec = null;
                // ------------------------------
                // Parameters for call to GetAttr
                // ------------------------------
                ParameterHolder_BusinessClass qq_value = new ParameterHolder_BusinessClass();
                record.getAttr(i+10000, qq_value);
                rec = (BusinessClass)qq_value.getObject();
                if (rec != null) {
                    BusinessQuery temp = template.getQuery(i+10000);

                    this.initializeDates(rec, temp);
                }
            }
        }
    }

    /**
     * initResultSet<p>
     * InitResultSet<br>
     *     InitResultSet initializes this Window's result set<br>
     *     using information provided in the link information.<br>
     *     If the caller provided an initial search, this method<br>
     *     will use it to find records from the database and<br>
     *     fill the result set.  If the caller did not provide<br>
     *     an initial search, but did provide a result set, we<br>
     *     use this result set as our result set.  If the caller<br>
     *     provided neither, we start with an empty result set.<br>
     * <p>
     * <p>
     * <p>
     * if the caller provided an initial search, use it to populate<br>
     * our result set.<br>
     * <p>
     * @param info Type: LinkInfo
     */
    public void initResultSet(LinkInfo info) {
        if (info.getInitialSearch() != null) {
            this.restrictInitialSearch(info.getInitialSearch());
            this.setResultSetFromQuery(info.getInitialSearch(), info.getRecordIndex().getValue());
            if (this.getResultSet() == null || this.getResultSet().size() == 0) {
                TextData msg = new TextData(this.getWindowName().toString());
                msg.concat(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_RECORDS_NOT_FOUND));

                if (!(this.getIsInTestMode())) {
                    JOptionPane.showMessageDialog(this, msg.toString(), "Information", JOptionPane.INFORMATION_MESSAGE );
                }
                else {
                    Logger.getLogger("task.part.logmgr").info(msg);
                }
                if (info.getCommandSet() == CommandMgr.CS_EDIT_SINGLE) {
                    this.insertRecordIntoResultSet((BusinessClass)null);
                }
            }


            //
            // otherwise, if the caller provided a result set, use it as
            // our result set.
            //
        }
        else if (info.getResultSet() != null) {
            if (info.getLinkStyle() == ExpressContainerWindow.WS_NESTED || info.getLinkStyle() == ExpressContainerWindow.WS_FOLDER) {
                this.setResultSetFromData(info.getResultSet(), info.getRecordIndex().getValue(), false);
            }
            else {
                this.setResultSetFromData(info.getResultSet(), info.getRecordIndex().getValue(), true);
            }

            //
            // otherwise, start with an empty result set.
            //
        }
        else {
            Array_Of_BusinessClass<BusinessClass> set = new Array_Of_BusinessClass<BusinessClass>();
            this.setResultSetFromData(set, 0, true);
        }
    }

    /**
     * initValuesInNewRec<p>
     * InitValuesInNewRec<br>
     *      Initialize values in a newly created BusinessClass instance.<br>
     * <p>
     * <p>
     * <p>
     * Initialize any dates in the record or its associated<br>
     * record to the current date & time (initialize according<br>
     * to the corresponding field's format template).<br>
     * <p>
     * @param record Type: BusinessClass
     */
    public void initValuesInNewRec(BusinessClass record) {
        this.initializeDates(record, this.getRecordTemplate());

        //
        // Invoke user customization to set additional initial values.
        //
        this.setValuesInNewRecord(record);
    }

    /**
     * insertRec<p>
     * InsertRec<br>
     *      InsertRec appends the given record into the<br>
     *     displayed record set.<br>
     * <p>
     * @param record Type: BusinessClass
     * @return int
     */
    public int insertRec(BusinessClass record) {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.InsertRec", this).getException();
    }

    /**
     * insertRecordIntoResultSet<p>
     * InsertRecordIntoResultSet<br>
     *      Insert an empty record into the result set at the currently<br>
     *     selected position.<br>
     * <p>
     * <p>
     * <p>
     * Validate the current record before inserting a new record.<br>
     * <p>
     * @param record Type: BusinessClass (Input) (default in Forte: NIL)
     */
    public void insertRecordIntoResultSet(BusinessClass record) {
        this.validateWindowRecords();

        this.leavingRecord();

        //
        // Update the nested result sets before switching
        // to a new record.
        //
        this.updateNestedResultSets((Array_Of_BusinessClass<BusinessClass>)null);
        this.updateFolderResultSets((Array_Of_BusinessClass<BusinessClass>)null);

        //
        // If the given record is nil, create a new one.
        //
        if (record == null) {
            record = this.newObject((BusinessClass)null);
        }

        this.getMaxIndex().setValue(this.insertRec(record));

        if (this.getResultSet().size() == 1 && this.getResultSet().get(0) == null && this.getWindowInfo() != null && (this.getWindowInfo().getAssociationMultiplicityMask()&BusinessQuery.ASSOC_MULT_ONE_MASK) > 0) {
            this.getResultSet().set(0, record);
            //
            // Make sure parent window's current record references the
            // same record as this window's result set.
            //
            BusinessClass rec = this.getParentCurrentRecord();
            if (rec != null) {
                rec.setAttr(this.getWindowInfo().getAssocNum(), record);
            }
        }
        else {
            this.getResultSet().add(record);
        }

        this.getRecordIndex().setValue(this.getMaxIndex().getValue());

        //
        // Set initial values in the new record.
        //
        this.initValuesInNewRec(record);

        // Tell SelectRecord not to validate current record.
        this.getAppBroker().setSkipSelectRecordValidate(true);
        try {
            this.selectRecord(this.getRecordIndex());
            this.getAppBroker().setSkipSelectRecordValidate(false);
        }
        catch (Throwable qq_ElseException) {
            this.getAppBroker().setSkipSelectRecordValidate(false);
           
            throw (RuntimeException)qq_ElseException;
        }

        this.getStatusLine().setStatus(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_RECORD_CREATED)), this.getRecordIndex());

        //
        //Reset the tab sequence just in case we are inserting a new
        //record in a window that had no previous records.
        //If the window is nested, it will reset from the top most
        //window all the way down.
        //
        this.getTabMgr().clearFieldList();
        if (this.getWindowInfo().getParentWindow() == null) {
            this.addFieldsToTabSequence();
        }
        else {
            ExpressClassWindow exWin = null;
            exWin = this;
            while (exWin.getWindowInfo().getParentWindow() != null) {
                exWin = exWin.getWindowInfo().getParentWindow();
            }
            exWin.addFieldsToTabSequence();
        }
        this.getTabMgr().enforceSequence();
    }
    /**
     * Same as {@link #insertRecordIntoResultSet(BusinessClass) with BusinessClass default value of null.
     */
    public void insertRecordIntoResultSet(){
      this.insertRecordIntoResultSet(null);
    }
    /**
     * isForeignKeyModified<p>
     * IsForeignKeyModified<br>
     *     IsForeignKeyModified checks to see if the foreign key<br>
     *     for a record has been changed by the user.<br>
     * <p>
     * <p>
     * <p>
     * if the record is nil, or the query is missing,<br>
     * then this record has not been modified, we will<br>
     * return FALSE<br>
     * <p>
     * @param record Type: BusinessClass
     * @param attr Type: int
     * @return boolean
     */
    public boolean isForeignKeyModified(BusinessClass record, int attr) {
        if (record != null && record.getUpdateQuery() != null) {
            //
            // loop over a list of foreign / local key groups
            //
            Array_Of_QueryAttrMap<QueryAttrMap> qq_localVector = record.getUpdateQuery().getForeignAttrMap(attr);
            if (qq_localVector != null) {
                for (QueryAttrMap attrMap : qq_localVector) {
                    //
                    // see if the local key has changed, if it has,
                    // return TRUE
                    //
                    if (record.getUpdateQuery().getUpdateAttr(attrMap.getLocal()) != null) {
                        return true;
                    }
                }
            }
        }

        //
        // if we get here, no keys have changed, return FALSE
        //
        return false;
    }

    /**
     * isRecordValid<p>
     * IsRecordValid<br>
     *     IsRecordValid is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     check a custom flag that indicates if the given<br>
     *     record has already been validated.  If this method<br>
     *     returns FALSE, the ValidateRecord method will be<br>
     *     called.  If it returns TRUE, ValidateRecord will<br>
     *     not be called.<br>
     * <p>
     * @param record Type: BusinessClass
     * @return boolean
     */
    public boolean isRecordValid(BusinessClass record) {
        return false;
    }

    /**
     * isSaveAppropriate<p>
     * IsSaveAppropriate<br>
     *     IsSaveAppropriate checks to see if a transaction is<br>
     *     active, and if not, to see if there are any updates<br>
     *     or deletes (which would make the save inappropriate).<br>
     *     The method returns TRUE if appropriate, FALSE other-<br>
     *     wise.  If TRUE, it also sets the ccMode.<br>
     * <p>
     * @param ccMode Type: int
     * @return boolean
     */
    public boolean isSaveAppropriate(ParameterHolder_integer ccMode) {
        boolean insertsOnly = false;

        if (this.getBusinessClient().transActive() == true) {
            ccMode.setInt(ConcurrencyMgr.TR_CONTINUE);
        }
        else {
            insertsOnly = true;
            if (this.getResultSet() != null) {
                for (BusinessClass r : this.getResultSet()) {
                    if (r.getInstanceStatus() == BusinessClass.ST_UPDATE || r.getInstanceStatus() == BusinessClass.ST_DELETE) {
                        insertsOnly = false;
                        break;
                    }
                }
            }
            if (insertsOnly) {
                ccMode.setInt(ConcurrencyMgr.TR_START);
            }
            else {
                return false;
            }
        }

        return true;
    }

    /**
     * isWindowOpen<p>
     * IsWindowOpen<br>
     *     IsWindowOpen returns TRUE if this window (or the<br>
     *     window that is ultimately its parent) is open.  It<br>
     *     returns FALSE otherwise.<br>
     * <p>
     * <p>
     * <p>
     * if no window given, assume this window.<br>
     * <p>
     * @param theWindow Type: ExpressClassWindow (Input) (default in Forte: NIL)
     * @return boolean
     */
    public boolean isWindowOpen(ExpressClassWindow theWindow) {
        if (theWindow == null) {
            theWindow = this;
        }

        //
        // if this window is open, return TRUE
        //
        if (theWindow.isShowing() == true) {
            return true;
        }
        else {
            //
            // if the window info is nil, then this
            // window definitely isn't open yet, but if
            // window info isn't nil, then...
            //
            if (theWindow.getWindowInfo() != null) {
                //
                // if window info isn't nil, see if this is a
                // nested or folder window, if it is, check to
                // see if it's parent is open.
                //
                if (theWindow.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_NESTED || theWindow.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_FOLDER) {
                    return this.isWindowOpen(theWindow.getWindowInfo().getParentWindow());
                }
            }
        }

        return false;
    }

    /**
     * leavingRecord<p>
     * LeavingRecord<br>
     *     LeavingRecord is a noop method that the express<br>
     *     developer may override to provide customer specific<br>
     *     behavior before the user scrolls off the record,<br>
     *     attempts to:<br>
     * <p>
     *     o save the record,<br>
     *     o close the window,<br>
     *     o insert a new record,<br>
     *     o scroll off the record<br>
     * <p>
     */
    public void leavingRecord() {
    }

    /**
     * logAttrForInsertRecords<p>
     * LogAttrForInsertRecords<br>
     *      LogAttrForInsertRecords method marks each field in<br>
     *     all insert records as modified.<br>
     * <p>
     */
    public void logAttrForInsertRecords() {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.LogAttrForInsertRecords", this).getException();
    }

    /**
     * markRecordInvalid<p>
     * MarkRecordInvalid<br>
     *     MarkRecordInvalid is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     set a custom flag that indicates that the given<br>
     *     record has not been validated.<br>
     * <p>
     * @param record Type: BusinessClass
     */
    public void markRecordInvalid(BusinessClass record) {
    }

    /**
     * markRecordValid<p>
     * MarkRecordValid<br>
     *     MarkRecordValid is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     set a custom flag that indicates that the given<br>
     *     record has been validated.  The developer is<br>
     *     responsible for calling this method from their<br>
     *     own custom ValidateRecord method.<br>
     * <p>
     * @param record Type: BusinessClass
     */
    public void markRecordValid(BusinessClass record) {
    }

    /**
     * newObject<p>
     * NewObject<br>
     *     NewObject returns a new record of the type this<br>
     *     window displays.<br>
     * <p>
     * @param obj Type: BusinessClass (Input) (default in Forte: NIL)
     * @return BusinessClass
     */
    public BusinessClass newObject(BusinessClass obj) {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.NewObject", this).getException();
    }

    /**
     * postClearResultSet<p>
     * End the current transaction, if one is active<br>
     * <p>
     */
    public void postClearResultSet() {
        if (this.getBusinessClient() != null) {
            this.getBusinessClient().endTrans(true);
        }

        //
        // make an empty set and make it the result set
        //
        Array_Of_BusinessClass<BusinessClass> set = new Array_Of_BusinessClass<BusinessClass>();

        //
        // if we are doing the clear result set while in
        // search mode, remove any templates from the fields
        // (for instance, remove the 0 displayed in integer
        // data fields).
        //
        if (this.getWindowMode().intValue() == ExpressContainerWindow.WM_SEARCH) {

            if (this.getWindowInfo().getCommandSet() == CommandMgr.CS_SEARCH) {
                this.qq_setWindowState(ExpressContainerWindow.ST_SEARCH);
            }

            set.set(0, this.newObject((BusinessClass)null));

            this.setResultSetFromData(set, 1, false);
            this.clearFieldsForSearch();

        }
        else {
            this.setResultSetFromData(set, 0, false);

        }

        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_COMPLETED_CLEAR) );
    }

    /**
     * postOpenInit<p>
     * PostOpenInit<br>
     *     PreOpenInit performs all initialization which must<br>
     *     occur after the window opens.<br>
     * <p>
     */
    public void postOpenInit() {
        super.postOpenInit();

        //
        // Only set the mode for windows which are NOT nested/folder.
        //
        if (this.getWindowInfo().getLinkStyle() != ExpressContainerWindow.WS_NESTED && this.getWindowInfo().getLinkStyle() != ExpressContainerWindow.WS_FOLDER) {
            //
            // Set the mode that this window will operate in according
            // to information passed in the link information.
            //
            if (this.getWindowInfo().getIsReadOnlyResultSet() && this.getWindowInfo().getCommandSet() != CommandMgr.CS_SEARCH) {
                this.qq_setWindowState(ExpressContainerWindow.ST_VIEW);
            }
            else {
                switch (this.getWindowInfo().getCommandSet()) {
                    case CommandMgr.CS_ALL: {
                        this.setMode(new IntegerData(ExpressContainerWindow.WM_EDIT, IntegerData.qq_Resolver.cINTEGERVALUE), false);

                        break;
                    }
                    case CommandMgr.CS_EDIT_MULTIPLE: {
                        this.getWindowMode().setValue(ExpressContainerWindow.WM_EDIT);
                        this.qq_setWindowState(ExpressContainerWindow.ST_EDIT);

                        break;
                    }
                    case CommandMgr.CS_EDIT_SINGLE: {
                        this.getWindowMode().setValue(ExpressContainerWindow.WM_EDIT);
                        this.qq_setWindowState(ExpressContainerWindow.ST_EDIT);
                        if (this.getWindowInfo().getResultSet() == null && this.getWindowInfo().getInitialSearch() == null) {
                            this.getWindowInfo().setResultSet(new Array_Of_BusinessClass<BusinessClass>());
                            this.getWindowInfo().getResultSet().add(this.newObject((BusinessClass)null));
                            this.initValuesInNewRec(this.getWindowInfo().getResultSet().get(0));
                        }

                        break;
                    }
                    case CommandMgr.CS_SEARCH: {
                        this.getWindowMode().setValue(ExpressContainerWindow.WM_SEARCH);
                        this.setSearchMode(false);

                        break;
                    }
                    case CommandMgr.CS_VIEW_MULTIPLE: {
                        this.getWindowMode().setValue(ExpressContainerWindow.WM_EDIT);
                        this.qq_setWindowState(ExpressContainerWindow.ST_VIEW);

                        break;
                    }
                    case CommandMgr.CS_VIEW_SINGLE: {
                        this.getWindowMode().setValue(ExpressContainerWindow.WM_EDIT);
                        this.qq_setWindowState(ExpressContainerWindow.ST_VIEW);
                        break;
                    }
                }
            }
        }

        //
        // Set the result set if this is NOT a Nested/Folder window
        // or if it is a Nested/Folder window but we were given
        // initial records to display.  But not if the command set
        // is search (unless we are doing a find all).
        //
        if (((this.getWindowInfo().getLinkStyle() != ExpressContainerWindow.WS_NESTED && this.getWindowInfo().getLinkStyle() != ExpressContainerWindow.WS_FOLDER) || this.getWindowInfo().getInitialSearch() != null || (this.getWindowInfo().getResultSet() != null && this.getWindowInfo().getResultSet().size() > 0)) && (this.getWindowInfo().getCommandSet() != CommandMgr.CS_SEARCH || (this.getWindowInfo().getCommandSet() == CommandMgr.CS_SEARCH && this.getWindowInfo().getInitialSearch() != null))) {
            this.initResultSet(this.getWindowInfo());
        }

        this.repaint();
    }

    /**
     * quit<p>
     * Quit<br>
     *      Quit exits the window without saving changes.<br>
     * <p>
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    public boolean quit(boolean confirm) {
        int answer = 0;
        this.setWindowIsExiting(true);

        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_WORKING_CANCEL) );

        if (confirm == true && this.getIsResultSetModified() == true) {
            answer = this.getAppBroker().confirmationDialog(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_CONFIRM_CANCEL)), this.getWindowName(), JOptionPane.YES_NO_OPTION, JOptionPane.NO_OPTION, 50, this.getAppBroker().getPreferences().getConfirmCancel());

            if (answer == JOptionPane.YES_OPTION) {
                EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_CANCEL_WINDOW );
                return true;
            }
            else {
                this.setWindowIsExiting(false);
                this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ABORTED_CANCEL) );
                return false;
            }
        }
        else {
            EventManager.postEvent( this, ExpressContainerWindow.cEVENT_AFTER_CANCEL_WINDOW );
            return true;
        }
    }

    /**
     * recordDisplayed<p>
     * RecordDisplayed<br>
     *     RecordDisplayed is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     run whenever a new record is displayed.  The<br>
     *     recordType parameter indicates the type of<br>
     *     record displayed.  The values are:<br>
     * <p>
     *       RT_NIL - no records displayed<br>
     *       RT_NEW - new, unmodified record displayed<br>
     *       RT_DB - database record displayed<br>
     *       RT_INSERT - new, modified record displayed<br>
     *       RT_CRITERIA - search criteria record displayed<br>
     * <p>
     * @param recordType Type: int
     */
    public void recordDisplayed(int recordType) {
    }

    /**
     * removeEmptyRows<p>
     * RemoveEmptyRows<br>
     *     Remove Empty rows from the DisplayedResultSet, which is passed<br>
     *     in as argument "Data". Return TRUE if at least 1 row was deleted;<br>
     *     return FALSE otherwise.<br>
     * <p>
     * @param data Type: Array_Of_BusinessClass<BusinessClass>
     * @return boolean
     */
    public boolean removeEmptyRows(Array_Of_BusinessClass<BusinessClass> data) {
        boolean deleteOccurred = false;

        if (data != null) {

            for (int i = data.size(); i >= 1; i--) {

                if (data.get(i-1) != null && data.get(i-1).getInstanceStatus() == BusinessClass.ST_EMPTY) {
                    this.deleteRec(i);
                    this.getMaxIndex().setValue(this.getMaxIndex().getValue()-1);
                    deleteOccurred = true;
                }

            }

        }

        if (deleteOccurred) {
            //
            // reset currently selected record if highest record in list was deleted.
            //
            if (this.getRecordIndex().getValue() > this.getMaxIndex().getValue()) {
                this.getRecordIndex().setValue(this.getMaxIndex().getValue());
            }
        }

        return deleteOccurred;
    }

    /**
     * removeEmptyRows<p>
     * RemoveEmptyRows<br>
     *     This method exists to be over-ridden by the method defined<br>
     *     in subclass ExpressOutlineWindow. This method is never<br>
     *     called directly.<br>
     * <p>
     * @param data Type: Array_Of_OutlineIndexNode<OutlineIndexNode>
     * @return boolean
     */
    public boolean removeEmptyRows(Array_Of_OutlineIndexNode<OutlineIndexNode> data) {
        return false;
    }

    /**
     * resetCommandStates<p>
     * ResetCommandStates<br>
     *     ResetCommandStates sets the state of all the displayed<br>
     *     commands to enabled or disabled, as appropriate given<br>
     *     the current conditions.<br>
     * <p>
     */
    public void resetCommandStates() {
        if (this.getWindowMode().intValue() == ExpressContainerWindow.WM_EDIT) {
            boolean enableCommitUndo = false;

            //
            // if the current record is not the first record, we can
            // scroll backwards.
            //
            if (this.getRecordIndex().getValue() > 1) {
                this.getCommandMgr().setState(CommandMgr.C_RS_FIRST, true);
                this.getCommandMgr().setState(CommandMgr.C_RS_PREV, true);
            }
            else {
                this.getCommandMgr().setState(CommandMgr.C_RS_FIRST, false);
                this.getCommandMgr().setState(CommandMgr.C_RS_PREV, false);
            }

            //
            // if the current record is not the last record, we can
            // scroll forwards.
            //
            if (this.getRecordIndex().getValue() < this.getMaxIndex().getValue()) {
                this.getCommandMgr().setState(CommandMgr.C_RS_LAST, true);
                this.getCommandMgr().setState(CommandMgr.C_RS_NEXT, true);
            }
            else {
                this.getCommandMgr().setState(CommandMgr.C_RS_LAST, false);
                this.getCommandMgr().setState(CommandMgr.C_RS_NEXT, false);
            }

            if (this.getResultSet() != null) {
                for (BusinessClass r : this.getResultSet()) {
                    if (r != null && (r.getInstanceStatus() == BusinessClass.ST_INSERT || r.getInstanceStatus() == BusinessClass.ST_UPDATE || r.getInstanceStatus() == BusinessClass.ST_DELETE)) {
                        enableCommitUndo = true;
                        break;
                    }
                }
            }

            if (enableCommitUndo == true) {
                this.setIsResultSetModified(true);
                this.getCommandMgr().setState(CommandMgr.C_RS_SAVE, true);
                this.getCommandMgr().setState(CommandMgr.C_RS_REVERT, true);
            }
            else {
                this.setIsResultSetModified(false);
                this.getCommandMgr().setState(CommandMgr.C_RS_SAVE, false);
                this.getCommandMgr().setState(CommandMgr.C_RS_REVERT, false);
            }

            if (this.getMaxIndex().getValue() > 0 && this.getWindowInfo().getIsReadOnlyResultSet() == false) {
                this.getCommandMgr().setState(CommandMgr.C_RS_DELETE, true);
            }
            else {
                this.getCommandMgr().setState(CommandMgr.C_RS_DELETE, false);
            }

            if (this.getWindowInfo().getIsReadOnlyResultSet() == true) {
                this.getCommandMgr().setState(CommandMgr.C_RS_INSERT, false);
            }

            //
            // Nested windows based on Optional (to-one) associations need
            // special treatment for enabling the Insert and Delete buttons
            // because their result set should only have 1 row.
            //
            if (this.getWindowInfo().getCommandSet() == CommandMgr.CS_EDIT_SINGLE && this.getWindowInfo().getCommandInterface() == CommandMgr.CI_BUTTONS && (this.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_NESTED || this.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_FOLDER) && this.getWindowInfo().getIsReadOnlyResultSet() == false && (this.getWindowInfo().getAssociationMultiplicityMask()&BusinessQuery.ASSOC_MULT_OPTIONAL) > 0 && this.getResultSet() != null) {
                if (this.getResultSet().size() > 0 && this.getResultSet().get(0) != null) {
                    if (this.getResultSet().get(0).getInstanceStatus() != BusinessClass.ST_DELETE) {
                        this.getCommandMgr().setState(CommandMgr.C_RS_INSERT, false);
                        this.getCommandMgr().setState(CommandMgr.C_RS_DELETE, true);
                    }
                    else {
                        this.getCommandMgr().setState(CommandMgr.C_RS_INSERT, false);
                        this.getCommandMgr().setState(CommandMgr.C_RS_DELETE, false);
                    }
                }
                else if (!(this.hasParentWindowMode(ExpressContainerWindow.WM_SEARCH))) {
                    this.getCommandMgr().setState(CommandMgr.C_RS_INSERT, true);
                }
            }

        }
        else if (this.getWindowMode().intValue() == ExpressContainerWindow.WM_SEARCH && this.getWindowInfo().getCommandSet() == CommandMgr.CS_SEARCH) {
            //
            // if the current record is not the first record, we can
            // scroll backwards.
            //
            if (this.getRecordIndex().getValue() > 1) {
                this.getCommandMgr().setState(CommandMgr.C_RS_FIRST, true);
                this.getCommandMgr().setState(CommandMgr.C_RS_PREV, true);
            }
            else {
                this.getCommandMgr().setState(CommandMgr.C_RS_FIRST, false);
                this.getCommandMgr().setState(CommandMgr.C_RS_PREV, false);
            }

            //
            // if the current record is not the last record, we can
            // scroll forwards.
            //
            if (this.getRecordIndex().getValue() < this.getMaxIndex().getValue()) {
                this.getCommandMgr().setState(CommandMgr.C_RS_LAST, true);
                this.getCommandMgr().setState(CommandMgr.C_RS_NEXT, true);
            }
            else {
                this.getCommandMgr().setState(CommandMgr.C_RS_LAST, false);
                this.getCommandMgr().setState(CommandMgr.C_RS_NEXT, false);
            }

            //
            // Even though this Search window can't Save, parent window may
            // be able to, so note if there are unsaved changes
            // (these will have been created by a linked window).
            //
            if (this.getResultSet() != null) {
                for (BusinessClass r : this.getResultSet()) {
                    if (r != null && (r.getInstanceStatus() == BusinessClass.ST_INSERT || r.getInstanceStatus() == BusinessClass.ST_UPDATE || r.getInstanceStatus() == BusinessClass.ST_DELETE)) {
                        this.setIsResultSetModified(true);
                        break;
                    }
                }
            }

        }
    }

    /**
     * resetDisplayedResultSet<p>
     * ResetDisplayedResultSet<br>
     *     Clean up the Displayed Result Set for this window and any<br>
     *     nested windows by removing rows with a status of ST_EMPTY.<br>
     *     This method synchronizes the displayed result set with work<br>
     *     done to ResultSet during Save (status ST_EMPTY rows are removed).<br>
     * <p>
     *     This method in ExpressClassWindow should never be invoked.<br>
     *     However, it does nothing, rather than<br>
     *     "raise Error(..).GetException" for upward compatibility with<br>
     *     Express Release 1 windows which have not been reGenerated under<br>
     *     Release 2. Windows that are not regenerated under release 2 will<br>
     *     not have a ResetDisplayedResultSet method generated into them.<br>
     * <p>
     */
    public void resetDisplayedResultSet() {
    }

    /**
     * restrictInitialSearch<p>
     * RestrictInitialSearch<br>
     *     RestrictInitialSearch is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     restrict which records to find when the window first<br>
     *     opens.<br>
     * <p>
     * @param searchCriteria Type: BusinessQuery
     */
    public void restrictInitialSearch(BusinessQuery searchCriteria) {
    }

    /**
     * restrictUserSearch<p>
     * RestrictUserSearch<br>
     *     RestrictUserSearch is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     restrict which records to find when the user selects<br>
     *     the search command.<br>
     * <p>
     * @param searchCriteria Type: BusinessQuery
     */
    public void restrictUserSearch(BusinessQuery searchCriteria) {
    }

    /**
     * resultSetIsAggregateAndEmpty<p>
     * ResultSetIsAggregateAndEmpty<br>
     *     ResultSetIsAggregateAndEmpty returns TRUE if the<br>
     *     given result set is an aggregate result set and<br>
     *     is empty.<br>
     * <p>
     * @param data Type: Array_Of_BusinessClass<BusinessClass>
     * @return boolean
     */
    public boolean resultSetIsAggregateAndEmpty(Array_Of_BusinessClass<BusinessClass> data) {
        if ((data == null || data.size() == 0) && this.getWindowInfo() != null && this.getWindowInfo().getIsAggregateResultSet()) {
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * revertToSaved<p>
     * RevertToSaved<br>
     *      RevertToSaved rollsback any changes since the last commit.<br>
     * <p>
     *      confirm specifies if the method should warn the user.<br>
     * <p>
     *      Returns TRUE if successful, FALSE if the user cancels<br>
     *     the operation.<br>
     * <p>
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @param redisplay Type: boolean (Input) (default in Forte: TRUE)
     * @return boolean
     */
    public boolean revertToSaved(boolean confirm, boolean redisplay) {
        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_WORKING_REVERT) );

        if (confirm == true && this.getIsResultSetModified() == true) {
            int answer = 0;
            //
            // request confirmation
            //
            answer = this.getAppBroker().confirmationDialog(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_CONFIRM_REVERT)), this.getWindowName(), JOptionPane.YES_NO_OPTION, JOptionPane.NO_OPTION, 50, this.getAppBroker().getPreferences().getConfirmRevert());
            if (answer == JOptionPane.NO_OPTION) {
                this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ABORTED_REVERT) );
                return false;
            }
        }

        if (this.getBusinessClient() != null) {
            this.getBusinessClient().revert(this.getResultSet());
            if (redisplay) {
                if (this.getResultSet().size() > 0) {
                    this.setResultSetFromData(this.getResultSet(), 1, true);
                }
                else {
                    this.setResultSetFromData(this.getResultSet(), 0, true);
                }
            }
        }

        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_COMPLETED_REVERT) );

        return true;
    }

    /**
     * save<p>
     * Save<br>
     *      Save sends the user changes to the server<br>
     *     to be saved in the database.<br>
     * <p>
     *      Returns TRUE if successful, FALSE if failed.<br>
     * <p>
     * @return boolean
     */
    public boolean save() {
        try {
            int ccMode = 0;
   
            if (this.getWindowInfo().getIsAggregateResultSet()) {
                if (!(this.getIsInTestMode())) {
                    JOptionPane.showMessageDialog(this, this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SAVE_AGG), "Warning", JOptionPane.WARNING_MESSAGE );
                }
                else {
                    Logger.getLogger("task.part.logmgr").info(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SAVE_AGG));
                }
                return false;
            }
   
            this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_WORKING_SAVE) );
   
            this.getAppBroker().setIsSaving(true);
            //
            // Validate the current record, others in this window
            // have already been validated.
            //
            this.validateWindowRecords();
   
            this.leavingRecord();
   
            //
            // Before sending changes to the database, bring the nested
            // result sets up to date with changes to the parent record's
            // keys, etc.
            //
            this.updateNestedResultSets((Array_Of_BusinessClass<BusinessClass>)null);
            this.updateFolderResultSets((Array_Of_BusinessClass<BusinessClass>)null);
   
            //
            // LogAttr for all fields of all Insert records.
            //
            this.logAttrForInsertRecords();
   
            //
            // pass the result set with all the changes to the client
            // side manager
            //
            if (this.getBusinessClient() != null) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(": Passing Result Set with ");
                if (this.getResultSet() != null) {
                    if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info( Integer.toString(this.getResultSet().size()));
                }
                else {
                    if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info("0");
                }
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(" items to server for update.");
   
                // ----------------------------------------
                // Parameters for call to IsSaveAppropriate
                // ----------------------------------------
                ParameterHolder_integer qq_ccMode = new ParameterHolder_integer(ccMode);
                boolean qq_IsSaveAppropriate = this.isSaveAppropriate(qq_ccMode);
                ccMode = qq_ccMode.getInt();
                if (!(qq_IsSaveAppropriate)) {
                    if (!(this.getIsInTestMode())) {
                        JOptionPane.showMessageDialog(this, this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SAVE), "Warning", JOptionPane.WARNING_MESSAGE );
                    }
                    else {
                        Logger.getLogger("task.part.logmgr").info(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SAVE));
                    }
   
                    this.getAppBroker().setIsSaving(false);
                    return false;
                }
   
            }
            else {
                if (!(this.getIsInTestMode())) {
                    JOptionPane.showMessageDialog(this, this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SAVE), "Warning", JOptionPane.WARNING_MESSAGE );
                }
                else {
                    Logger.getLogger("task.part.logmgr").info(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SAVE));
                }
   
                this.getAppBroker().setIsSaving(false);
                return false;
            }
   
            //
            // retreive any extra records the developer has
            // added in custom code.
            //
            Array_Of_BusinessClass<BusinessClass> extraRecords = null;
            try {
                extraRecords = this.addRecordsToSave();
                if (extraRecords != null) {
                    if (extraRecords != null) {
                        for (BusinessClass r : extraRecords) {
                            this.getResultSet().add(r);
                        }
                    }
                }
   
                this.getBusinessClient().update(this.getResultSet(), ccMode);
   
                //
                // remove any extra records the developer has
                // added in custom code.
                //
                if (extraRecords != null) {
          for (Iterator<BusinessClass> iterator = extraRecords
              .iterator(); iterator.hasNext();) {
            BusinessClass r = iterator.next();
            this.getResultSet().deleteRow(r);
          }
        }
   
                //
                // remove any extra records the developer has
                // added in custom code.
                //
            }
            catch (Throwable qq_ElseException) {
                if (extraRecords != null) {
          for (Iterator<BusinessClass> iterator = extraRecords
              .iterator(); iterator.hasNext();) {
            BusinessClass r = iterator.next();
            this.getResultSet().deleteRow(r);
          }
        }
                // ----------------------------------------
                // Parameters for call to IsSaveAppropriate
                // ----------------------------------------
                ParameterHolder_integer qq_ccMode = new ParameterHolder_integer(ccMode);
                boolean qq_IsSaveAppropriate = this.isSaveAppropriate(qq_ccMode);
                ccMode = qq_ccMode.getInt();
                if (qq_IsSaveAppropriate) {
                   
                    throw (RuntimeException)qq_ElseException;
                }
                else {
                    ErrorDesc err = (ErrorDesc)ErrorMgr.getAt(1);
                    if (err != null) {
                        TextData msg = err.getMessageText();
                        msg.concat(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_TRANS_ABORTED));
                       
                        throw (RuntimeException)qq_ElseException;
                    }
                }
   
            }
   
            this.setIsResultSetModified(false);
   
            this.resetDisplayedResultSet();
            this.resetCommandStates();
   
            this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_COMPLETED_SAVE) );
   
            this.getAppBroker().setIsSaving(false);
            return true;
   
        }
        catch (Throwable qq_ElseException) {
        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(": Got exception during Save.");
        this.getAppBroker().setIsSaving(false);
       
        throw (RuntimeException)qq_ElseException;
        }
    }

    /**
     * scrollToFirst<p>
     * ScrollToFirst<br>
     *      ScrollToFirst selects and displays the first record in<br>
     *     the displayed result set.<br>
     * <p>
     */
    public void scrollToFirst() {
        IntegerData i = new IntegerData(1);

        this.scrollToIndex(i);
    }

    /**
     * scrollToIndex<p>
     * ScrollToIndex<br>
     *      ScrollToIndex selects and displays the record at the<br>
     *     given index in the displayed result set.<br>
     * <p>
     *     TheIndex specifies the index of the record to display.<br>
     * <p>
     * @param theIndex Type: IntegerData
     */
    public void scrollToIndex(IntegerData theIndex) {
        if (theIndex == null) {
            theIndex = new IntegerData(1);

        }
        else if (theIndex.getValue() > this.getMaxIndex().getValue()) {
            theIndex.setValue(this.getMaxIndex().getValue());

        }
        else if (theIndex.getValue() < 1) {
            theIndex.setValue(1);

        }

        this.selectRecord(theIndex);
    }

    /**
     * scrollToLast<p>
     * ScrollToLast<br>
     *      ScrollToLast selects and displays the first record in<br>
     *     the displayed result set.<br>
     * <p>
     */
    public void scrollToLast() {
        IntegerData i = new IntegerData(this.getMaxIndex().getValue());

        this.scrollToIndex(i);
    }

    /**
     * scrollToNext<p>
     * ScrollToNext<br>
     *      ScrollToNext selects and displays the next record in<br>
     *     the displayed result set.<br>
     * <p>
     */
    public void scrollToNext() {
        IntegerData i = new IntegerData(this.getRecordIndex().getValue()+1);

        this.scrollToIndex(i);
    }

    /**
     * scrollToPrev<p>
     * ScrollToPrev<br>
     *      ScrollToPrev selects and displays the previous record in<br>
     *     the displayed result set.<br>
     * <p>
     */
    public void scrollToPrev() {
        IntegerData i = new IntegerData(this.getRecordIndex().getValue()-1);

        this.scrollToIndex(i);
    }

    /**
     * search<p>
     * Search<br>
     *      Search performs a search on the database using<br>
     *     the given search or constructing one from user input.<br>
     * <p>
     *     search specifies a search to pass to the database.  If<br>
     *       omitted, the method calls GetSearchCriteria, which constructs<br>
     *       the search from user input.<br>
     * <p>
     *      Returns the resulting set of database records.<br>
     * <p>
     * @param queryTree Type: BusinessQuery
     * @return Array_Of_BusinessClass<BusinessClass>
     */
    public Array_Of_BusinessClass<BusinessClass> search(BusinessQuery queryTree) {
        try {
            Array_Of_BusinessClass<BusinessClass> data = null;
   
            this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_WORKING_SEARCH) );
   
            //
            // End the current transaction, if one is active
            //
            if (this.getBusinessClient() != null) {
                this.getBusinessClient().endTrans(true);
            }
   
            //
            // Perform the select
            //
            if (this.getBusinessClient() != null) {
                if (!(this.getWindowInfo().getIsAggregateResultSet())) {
                    if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                    if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(": Performing query.");
                    this.restrictUserSearch(queryTree);
                    data = this.getBusinessClient().select(queryTree, ConcurrencyMgr.TR_START);
                    data.setDefaultClass(BusinessClass.class);
                }
                else {
                    JOptionPane.showMessageDialog(this, this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_CANNOT_SEARCH_AGG), "Warning", JOptionPane.WARNING_MESSAGE );
                    return null;
                }
            }
   
            //
            // if no records returned, report search returned no records
            //
            if (data == null || data.size() == 0) {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(": Got 0 records back from query.");
                if (this.getWindowMode().intValue() == ExpressContainerWindow.WM_SEARCH) {
                    this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_RECORD_NONE_FOUND) );
                }
                else {
                    this.clearResultSet(false);
                }
   
                //
                // if got records back, display them
                //
            }
            else {
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(": Got ");
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info( Integer.toString(data.size()));
                if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(" records back from query.");
   
                //
                // if window has all commands, switch from search
                // to edit mode.
                //
                if (this.getWindowInfo().getCommandSet() == CommandMgr.CS_ALL) {
                    //
                    // This is a kludge that makes windows perform
                    // better.  SetMode checks the ResultSet to see
                    // if the change is due to a successful search
                    // or user action.  Since we got data back from
                    // the search, it will look different than the
                    // result set would look if the user just presses
                    // edit mode while in search mode.  The upshot
                    // is that SetMode will not clear the result set
                    // when called from Search, but will when the
                    // user presses edit mode.
                    //
                    this.setResultSet(data);
   
                    this.setMode(new IntegerData(ExpressContainerWindow.WM_EDIT, IntegerData.qq_Resolver.cINTEGERVALUE), false);
   
                    //
                    // if window only shows search commands, make the records
                    // view only.
                    //
                }
                else if (this.getWindowInfo().getCommandSet() == CommandMgr.CS_SEARCH) {
                    this.qq_setWindowState(ExpressContainerWindow.ST_VIEW);
                }
   
                //
                // display the returned records
                //
                this.setResultSetFromData(data, 1, true);
   
                this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_RECORD_NUM_FOUND) );
                this.getStatusText().replaceParameters(this.getStatusText(), new IntegerData(data.size()));
   
                //
                // notify user if max records returned so they can
                // requery if desired.
                //
                if (data.size() == this.getAppBroker().getPreferences().getMaxRecords().getValue()) {
                    if (!(this.getIsInTestMode())) {
                        JOptionPane.showMessageDialog(this, this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_MAX_FOUND), "Information", JOptionPane.INFORMATION_MESSAGE );
                    }
                    else {
                        Logger.getLogger("task.part.logmgr").info(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_ERROR_MAX_FOUND));
                    }
                }
            }
   
            //
            // return the result set
            //
            return this.getResultSet();
   
        }
        catch (Throwable qq_ElseException) {
        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(this.getWindowName());
        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 10) ) Logger.getLogger("task.part.logmgr").info(": Got exception during search.");
       
        throw (RuntimeException)qq_ElseException;
        }
    }

    /**
     * selectRecord<p>
     * SelectRecord<br>
     *      SelectRecord selects the record at the given index<br>
     *     and displays it on this window.  The code<br>
     *     to display the record varies depending on the data<br>
     *     display implementation, so this method is overridden<br>
     *     in the base Window code.<br>
     * <p>
     *      TheIndex specifies the index of the record to select.<br>
     * <p>
     * <p>
     * <p>
     * Validate the current record before moving on to the next.<br>
     * <p>
     * @param theIndex Type: IntegerData
     */
    public void selectRecord(IntegerData theIndex) {
        if (theIndex.getValue() > 0) {

            //
            // Don't validate if caller says not to (may not be leaving a record).
            // Also, do not validate current record if selecting the same one.
            //
            if (!(this.getAppBroker().getSkipSelectRecordValidate()) && theIndex.getValue() != this.getRecordIndex().getValue()) {
                this.validateWindowRecords();

                this.leavingRecord();
            }

            //
            // Before moving to a new record, bring the nested and folder
            // window's records up to date with changes to the parent
            // window's record keys.
            //
            if (this.getMaxIndex().getValue() != 0) {
                this.updateNestedResultSets((Array_Of_BusinessClass<BusinessClass>)null);
                this.updateFolderResultSets((Array_Of_BusinessClass<BusinessClass>)null);
            }
        }
        //
        // Now change the index to the given index (or the nearest
        // valid choice).
        //
        this.setIndex(theIndex);

        //
        // Now display the selected record.
        //
        this.displayCurrentRecord();
    }

    /**
     * setCurRec<p>
     * SetCurRec<br>
     *     SetCurRec replaces the current record with the given<br>
     *     record in both the resultSet and DisplayedResultSet.<br>
     * <p>
     * @param record Type: BusinessClass
     */
    public void setCurRec(BusinessClass record) {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.SetCurRec", this).getException();
    }

    /**
     * setCurrentFolder<p>
     * SetCurrentFolder<br>
     *     SetCurrentFolder makes the folder corresponding to the<br>
     *     given folder number the selected folder.<br>
     * <p>
     *     Returns TRUE if successful, FALSE if folderNum out of<br>
     *     bounds.<br>
     * <p>
     * <p>
     * <p>
     * switch to the new folder.<br>
     * <p>
     * @param folderNum Type: int
     * @return boolean
     */
    public boolean setCurrentFolder(int folderNum) {
        if (this.getFolderMgr().qq_setCurrentFolder(folderNum)) {
            //
            // refresh this window's state.
            //
            this.setFolderWindowState(this.getWindowState());

            //
            // refresh this folder's result set.
            //
            this.setFolderResultSet();

            //
            // reset the tab sequence
            //
            this.getTabMgr().clearFieldList();
            if (this.getWindowInfo().getParentWindow() == null) {
                this.addFieldsToTabSequence();
            }
            else {
                ExpressClassWindow exWin = null;
                exWin = this;
                while (exWin.getWindowInfo().getParentWindow() != null) {
                    exWin = exWin.getWindowInfo().getParentWindow();
                }
                exWin.addFieldsToTabSequence();
            }
            this.getTabMgr().enforceSequence();

            return true;

        }
        else {
            return false;
        }
    }

    /**
     * setCurrentFolder<p>
     * SetCurrentFolder<br>
     *     SetCurrentFolder makes the folder corresponding to the<br>
     *     given folder number the selected folder.<br>
     * <p>
     *     Returns TRUE if successful, FALSE if folderNum out of<br>
     *     bounds.<br>
     * <p>
     * <p>
     * <p>
     * switch to the new folder.<br>
     * <p>
     * @param folder Type: FolderDesc
     * @return boolean
     */
    public boolean setCurrentFolder(FolderDesc folder) {
        if (this.getFolderMgr().qq_setCurrentFolder(folder)) {
            //
            // refresh this window's state.
            //
            this.setFolderWindowState(this.getWindowState());

            //
            // refresh this folder's result set.
            //
            this.setFolderResultSet();

            //
            // reset the tab sequence
            //
            this.getTabMgr().clearFieldList();
            if (this.getWindowInfo().getParentWindow() == null) {
                this.addFieldsToTabSequence();
            }
            else {
                ExpressClassWindow exWin = null;
                exWin = this;
                while (exWin.getWindowInfo().getParentWindow() != null) {
                    exWin = exWin.getWindowInfo().getParentWindow();
                }
                exWin.addFieldsToTabSequence();
            }
            this.getTabMgr().enforceSequence();

            return true;

        }
        else {
            return false;
        }
    }

    /**
     * setEditMode<p>
     * SetEditMode<br>
     *     SetEditMode puts a window into edit mode, which<br>
     *     allows viewing, inserting, deleting, and modifying<br>
     *     records.<br>
     * <p>
     * <p>
     * <p>
     * we're just going into edit mode, so there is<br>
     * no way the user could have modified the result<br>
     * set yet.<br>
     * <p>
     */
    public void setEditMode() {
        this.setIsResultSetModified(false);

        //
        // Set the mode
        //
        this.getWindowMode().setValue(ExpressContainerWindow.WM_EDIT);
        this.getCommandMgr().setMode(this.getWindowMode(), this.getWindowInfo());

        //
        // Reset the commands' enabled and disabled state.
        //
        this.resetCommandStates();

        //
        // set the field states to reflect edit mode
        // (this may make some fields read/only).
        //
        this.qq_setWindowState(ExpressContainerWindow.ST_EDIT);

        //
        // If the window has completed opening, figure out if we
        // should clear the result set.
        //
        if ((this.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_MODAL || this.getWindowInfo().getLinkStyle() == ExpressContainerWindow.WS_MODELESS) && this.getWindowRegistered() == true) {
            //
            // if the user is exiting search mode, we want to
            // clear the result set, if we're automatically
            // leaving search mode after a successful search,
            // don't clear the result set.
            //
            if (this.getResultSet() != null && this.getResultSet().size() > 0 && this.getResultSet().get(0) != null && this.getResultSet().get(0).getInstanceStatus() == BusinessClass.ST_EMPTY) {
                this.clearResultSet(false);
            }
        }

        this.getStatusText().clear();
        this.getModeText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_MODE_EDIT) );
    }

    /**
     * setFieldValue<p>
     * SetFieldValue<br>
     *     SetFieldValue displays the given data value in<br>
     *     the given field.  If the data value is nil or<br>
     *     null, then the method clears the field.<br>
     * <p>
     * @param field Type: DataValue
     * @param data Type: DataValue
     */
    public void setFieldValue(DataValue field, DataValue data) {
        if (field != null && data != null && data.getIsNull() == false) {
            field.setValue(data);

        }
        else {
            //
            // if the field has a text representation,
            // clear it's value
            //
            if (field instanceof NumericData || field instanceof DateTimeData || field instanceof TextData || field instanceof IntervalData) {
                field.setValue("");

                //
                // if the field is boolean, set it to FALSE
                //
            }
            else if (field instanceof BooleanData) {
                field.setValue("FALSE");
            }
        }
    }

    /**
     * setFolderResultSet<p>
     * SetFolderResultSet<br>
     *     SetFolderResultSet sets the result set of the current<br>
     *     folder.<br>
     * <p>
     */
    public void setFolderResultSet() {
    }

    /**
     * setFolderWindowState<p>
     * SetFolderWindowState<br>
     *     SetFolderWindowState sets the given window state<br>
     *     for the current folder in the window.<br>
     * <p>
     * @param state Type: int
     */
    public void setFolderWindowState(int state) {
    }

    /**
     * setIndex<p>
     * SetIndex<br>
     *      SetIndex sets the record index to the given value, assuming<br>
     *     it is within valid bounds.<br>
     * <p>
     *      TheIndex specifies the index of the record to select.<br>
     * <p>
     * <p>
     * <p>
     * if the given record is larger than the MaxIndex, or<br>
     * smaller than the minimum, ignore the value select the first<br>
     * record.<br>
     * <p>
     * @param theIndex Type: IntegerData
     */
    public void setIndex(IntegerData theIndex) {
        if (theIndex.getValue() > this.getMaxIndex().getValue() || theIndex.getValue() < 1) {
            if (this.getMaxIndex().getValue() >= 1) {
                theIndex.setValue(1);
            }
            else {
                theIndex.setValue(0);
            }

        }

        this.getRecordIndex().setValue(theIndex.getValue());
        this.getIndexTC().setValue(theIndex.getValue());

        this.resetCommandStates();
    }

    /**
     * setMode<p>
     * SetMode<br>
     *      SetMode aborts the current result set and places<br>
     *     the Window in search mode, or exits search mode without<br>
     *     performing a search.<br>
     * <p>
     *      newMode specifies search mode state.  If omitted, this method<br>
     *       toggles the current search mode.<br>
     * <p>
     *      confirm specifies if the method should warn the user<br>
     *       and allow the user to commit changes.<br>
     * <p>
     *      Returns TRUE if successful, FALSE if the user cancels<br>
     *     the operation.<br>
     * <p>
     * <p>
     * <p>
     * if newMode is given as EDIT, or if newMode not given<br>
     * and current mode is SEARCH, then set mode to EDIT<br>
     * <p>
     * @param newMode Type: IntegerData (Input) (default in Forte: NIL)
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    public boolean setMode(IntegerData newMode, boolean confirm) {
        if ((newMode != null && newMode.intValue() == ExpressContainerWindow.WM_EDIT) || (newMode == null && this.getWindowMode().intValue() == ExpressContainerWindow.WM_SEARCH)) {
            this.setEditMode();
            return true;

            //
            // Otherwise, make mode SEARCH
            //
        }
        else {
            //
            // Reset the Mode to EDIT in case an exception occurs
            // during a customized ValidateRecord method
            //
            this.getWindowMode().setValue(ExpressContainerWindow.WM_EDIT);

            //
            // Attempt to change the mode to search, if it fails,
            // reset the mode to EDIT.
            //
            if (this.setSearchMode(confirm)) {
                return true;
            }
            else {
                if (newMode != null) {
                    newMode.setValue(ExpressContainerWindow.WM_EDIT);
                }
                return false;
            }
        }
    }

    /**
     * setResultSetFromData<p>
     * SetResultSetFromData<br>
     *      Replace this Window's result set with the given<br>
     *     result set.  This method generates an exception if<br>
     *     this Window is currently running in INDEPENDENT mode.<br>
     *     If the Window is not yet running in either mode, it<br>
     *     sets the mode to DEPENDENT.<br>
     * <p>
     *     Parameter "data" holds the new result set.<br>
     * <p>
     * @param data Type: Array_Of_BusinessClass<BusinessClass>
     * @param initialIndex Type: int (Input) (default in Forte: 1)
     * @param allowDeferredFetch Type: boolean (Input) (default in Forte: TRUE)
     */
    public void setResultSetFromData(Array_Of_BusinessClass<BusinessClass> data, int initialIndex, boolean allowDeferredFetch) {
        this.setIsResultSetModified(false);

        //
        // check to ensure that we have all the columns we should
        // have.  First, see if we have records from the database.
        //
        if (this.firstRecordIsNil(data) && allowDeferredFetch) {
            if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(".SetResultSetFromData1: calling ");
                Logger.getLogger("task.part.logmgr").info(this.getWindowInfo().getParentWindow().getWindowName());
                Logger.getLogger("task.part.logmgr").info(".GetDependentData()");
            }
            data.set(0, this.newObject((BusinessClass)null));
            data = this.getWindowInfo().getParentWindow().getDependentData(data, this.getRecordTemplate(), this.getWindowInfo().getAssocNum());

        }
        else if (this.firstRecordIsNotEmpty(data) && allowDeferredFetch) {
            //
            // look for a record from the database and see if it
            // has all the columns this window requires.
            //
            if (data != null) {
                for (BusinessClass record : data) {
                    if (record != null && record.getInstanceStatus() != BusinessClass.ST_EMPTY && this.hasAllRequiredColumns(record, this.getRecordTemplate()) == false && this.getWindowInfo() != null && this.getWindowInfo().getParentWindow() != null) {
                        if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
                            Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                            Logger.getLogger("task.part.logmgr").info(".SetResultSetFromData2: calling ");
                            Logger.getLogger("task.part.logmgr").info(this.getWindowInfo().getParentWindow().getWindowName());
                            Logger.getLogger("task.part.logmgr").info(".GetDependentData()");
                        }
                        this.commandLinkQueryAddKeys(record, this.getRecordTemplate());
                        data = this.getWindowInfo().getParentWindow().getDependentData(data, this.getRecordTemplate(), this.getWindowInfo().getAssocNum());
                    }
                    break;
                }
            }

        }
        else if (this.resultSetIsAggregateAndEmpty(data) && allowDeferredFetch && this.getWindowInfo().getDataToDisplay() != ExpressClassWindow.DD_NEW_RECORD_INSERT) {
            if (data == null) {
                data = new Array_Of_BusinessClass<BusinessClass>();
            }
            if (LogMgr.getInstance().test(Framework.Constants.SP_MT_DEBUG, Framework.Constants.SP_ST_EX, 30, 110)) {
                Logger.getLogger("task.part.logmgr").info(this.getWindowName());
                Logger.getLogger("task.part.logmgr").info(".SetResultSetFromData3: calling ");
                Logger.getLogger("task.part.logmgr").info(this.getWindowInfo().getParentWindow().getWindowName());
                Logger.getLogger("task.part.logmgr").info(".GetDependentData()");
            }
            data = this.getWindowInfo().getParentWindow().getDependentData(data, this.getRecordTemplate(), this.getWindowInfo().getAssocNum());

        }

        //
        // point to the given set of records
        //
        if (data == null) {
            data = new Array_Of_BusinessClass<BusinessClass>();
        }
        this.setResultSet(data);
    }

    /**
     * setResultSetFromQuery<p>
     * SetResultSet<br>
     *      SetResultSet replaces this Window's result set with<br>
     *     the result set generated from the given search.  This<br>
     *     method generates an exception if this Window is curr-<br>
     *     ently running in DEPENDENT mode.  If the Window is<br>
     *     not yet running in either mode, it sets the mode to<br>
     *     INDEPENDENT.<br>
     * <p>
     *     search holds the search used to fetch the new result set.<br>
     * <p>
     * @param query Type: BusinessQuery
     * @param initialIndex Type: int (Input) (default in Forte: 1)
     */
    public void setResultSetFromQuery(BusinessQuery query, int initialIndex) {
        this.search(query);
    }
    public void setResultSetFromQuery(BusinessQuery query){
      this.setResultSetFromQuery(query, 1);
    }
    /**
     * setSearchConstraint<p>
     * SetSearchConstraint<br>
     *     SetSearchConstraint records the query by example<br>
     *     value entered by the user (if any) for the given<br>
     *     field.<br>
     * <p>
     * <p>
     * <p>
     * Handle getting the search criteria from DataFields<br>
     * and other text based fields.<br>
     * <p>
     * @param query Type: BusinessQuery
     * @param attrNumber Type: int
     * @param field Type: JComponent
     * @param fieldType Type: DataValue
     */
    public void setSearchConstraint(BusinessQuery query, int attrNumber, JComponent field, DataValue fieldType) {
        if (field instanceof CharacterField && WidgetState.get(field) == Constants.FS_QUERY) {
            if (TextValue.getWithCharacterField(((CharacterField)field)) != null && !(TextValue.getWithCharacterField(((CharacterField)field)).getIsNull()) && TextValue.getWithCharacterField(((CharacterField)field)).isNotEqual("").getValue() && TextValue.getWithCharacterField(((CharacterField)field)).isNotEqual("N/A").getValue()) {
                if (field instanceof DataField && (CharacterTemplate.get(((DataField)field)) != null || DateTemplate.get(((DataField)field)) != null || NumericTemplate.get(((DataField)field)) != null)) {
                    //
                    // DataField has a template defined.  QBE value typed in
                    // by user must match the template.
                    //
                    TextData theTemplate = null;
                    if (CharacterTemplate.get(((DataField)field)) != null) {
                        theTemplate = CharacterTemplate.get(((DataField)field));
                    }
                    else if (DateTemplate.get(((DataField)field)) != null) {
                        theTemplate = DateTemplate.get(((DataField)field));
                    }
                    else {
                        theTemplate = NumericTemplate.get(((DataField)field));
                    }

                    query.addConstraint(attrNumber, TextValue.getWithCharacterField(((CharacterField)field)), fieldType, theTemplate);
                }
                else {
                    query.addConstraint(attrNumber, TextValue.getWithCharacterField(((CharacterField)field)), fieldType, (TextData)null);
                }
            }

            //
            // Handle getting the search criteria from DropLists,
            // RadioLists, etc.
            //
        }
        else if (field instanceof ListField) {
            //
            // If the list is numeric and it has a value to add
            // as a constraint, get it's integer value
            //
            if (fieldType instanceof NumericData) {
                if (TextValue.get(((ListField)field)) != null && !(TextValue.get(((ListField)field)).getIsNull()) && TextValue.get(((ListField)field)).isNotEqual("").getValue() && TextValue.get(((ListField)field)).isNotEqual("N/A").getValue()) {
                    query.addConstraint(attrNumber, new IntegerData(IntegerValue.get(((ListField)field))), fieldType, (TextData)null);
                }

                //
                // if the list stores text and has a value, get it
                //
            }
            else {
                if (TextValue.get(((ListField)field)) != null && !(TextValue.get(((ListField)field)).getIsNull()) && TextValue.get(((ListField)field)).isNotEqual("").getValue() && TextValue.get(((ListField)field)).isNotEqual("N/A").getValue()) {
                    query.addConstraint(attrNumber, TextValue.get(((ListField)field)), fieldType, (TextData)null);
                }
            }

        }
    }

    /**
     * setSearchMode<p>
     * SetSearchMode<br>
     *     SetSearchMode puts a window into search mode, which<br>
     *     allows the user to enter search criteria and perform<br>
     *     queries.<br>
     * <p>
     * @param confirm Type: boolean (Input) (default in Forte: FALSE)
     * @return boolean
     */
    public boolean setSearchMode(boolean confirm) {
        int tempInteger = 0;

        if (confirm == true) {
            //
            // if the result set has been changed, ask the
            // user if they wish to save those changes.
            //
            if (this.getIsResultSetModified() == true && !(this.getWindowInfo().getIsReadOnlyResultSet())) {
                // ----------------------------------------
                // Parameters for call to IsSaveAppropriate
                // ----------------------------------------
                ParameterHolder_integer qq_ccMode = new ParameterHolder_integer(tempInteger);
                boolean qq_IsSaveAppropriate = this.isSaveAppropriate(qq_ccMode);
                tempInteger = qq_ccMode.getInt();
                if (qq_IsSaveAppropriate) {
                    int answer = 0;
                    answer = this.getAppBroker().confirmationDialog(new TextData(this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_CONFIRM_SEARCH_MODE)), this.getWindowName(), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.YES_OPTION, 50, this.getAppBroker().getPreferences().getConfirmMode());
                    //
                    // save if so instructed
                    //
                    if (answer == JOptionPane.YES_OPTION) {
                        if (this.save() == false) {
                            return false;
                        }

                        //
                        // if user canceled, stay in edit mode.
                        //
                    }
                    else if (answer == JOptionPane.CANCEL_OPTION) {
                        //
                        // just in case the caller passed a reference to
                        // the actual mode value, set it back to EDIT.
                        //
                        return false;
                    }
                }
            }
            else {
                //
                // If result set isn't modified, we don't need to validate
                // record (ValidateRecord is called in the Save() method),
                // but we should still call LeavingRecord(), which will
                // also be called in the Save() method if it is called.
                //
                this.leavingRecord();
            }

            //
            // if we do not want to confirm entering search
            // mode, then save changes before switching.
            //
        }
        else if (this.getIsResultSetModified() == true && !(this.getWindowInfo().getIsReadOnlyResultSet())) {
            if (this.save() == false) {
                return false;
            }
        }
        else {
            //
            // If result set isn't modified, we don't need to validate
            // record (ValidateRecord is called in the Save() method),
            // but we should still call LeavingRecord(), which will
            // also be called in the Save() method if it is called.
            //
            this.leavingRecord();
        }


        //
        // when we get here the user has confirmed
        // this operation, change the mode.
        //
        this.getWindowMode().setValue(ExpressContainerWindow.WM_SEARCH);
        if (this.getWindowInfo().getCommandSet() == CommandMgr.CS_ALL) {
            this.getCommandMgr().setMode(this.getWindowMode(), this.getWindowInfo());

        }

        //
        // Put the fields into search state (this will
        // allow operator characters in integer fields
        // and the like and may make some read/only fields
        // read/write).
        //
        this.qq_setWindowState(ExpressContainerWindow.ST_SEARCH);

        if (this.getWindowInfo().getCommandSet() != CommandMgr.CS_SEARCH || (this.getWindowInfo().getCommandSet() == CommandMgr.CS_SEARCH && this.getWindowInfo().getResultSet() != null && this.getWindowInfo().getResultSet().size() == 1 && this.getWindowInfo().getResultSet().get(0) == null) || (this.getWindowInfo().getResultSet() == null && this.getWindowInfo().getInitialSearch() == null)) {
            //
            // make an empty set and make it the result set
            //
            this.clearResultSet(false);
        }

        //
        // Give the user a hint.
        //
        this.getStatusText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_PROMPT_ENTER_CRITERIA) );
        this.getModeText().setValue( this.getAppBroker().getLocalString(ApplicationBroker.MS_MESSAGE_SET, ApplicationBroker.MN_MODE_SEARCH) );

        return true;
    }

    /**
     * setValuesInNewRecord<p>
     * SetValuesInNewRecord<br>
     *     SetValuesInNewRecord is a noop method that the express<br>
     *     developer can override to add code that will<br>
     *     set some default values for newly inserted records<br>
     *     when the user chooses the Insert Record command.<br>
     * <p>
     * @param record Type: BusinessClass
     */
    public void setValuesInNewRecord(BusinessClass record) {
    }

    /**
     * setWidgetState<p>
     * SetWidgetState<br>
     *     SetWidgetState sets the state the given field widget<br>
     *     and sets it's color to match.<br>
     * <p>
     * <p>
     * <p>
     * First ensure that this window (or this window's parent)<br>
     * is open (this is a workaround for a bug in the V2.0.C.1<br>
     * version of Forte, which causes problems with radio buttons<br>
     * if they are disabled before the window is open).<br>
     * <p>
     * @param field Type: JComponent
     * @param state Type: int
     */
    public void setWidgetState(JComponent field, int state) {
        if (this.isWindowOpen((ExpressClassWindow)null)) {
            WidgetState.set(field, state);

            //if the field is a ToggleField, set the color to inherit no matter
            //what the state is to avoid the ring around the checkbox
            if (field instanceof JCheckBox) {
                ColourChange.setBackground(((JComponent)field), Constants.C_INHERIT);

            }
            else if (field instanceof CharacterField || field instanceof ListField) {
                switch (state) {
                    case Constants.FS_VIEWONLY: {
                        ColourChange.setBackground(((JComponent)field), Constants.C_GRAY2);

                        break;
                    }
                    case Constants.FS_UPDATE: {
                        if (!(field instanceof JCheckBox) && !(field instanceof RadioList)) {
                            ColourChange.setBackground(((JComponent)field), Constants.C_WHITE);
                        }

                        break;
                    }
                    case Constants.FS_QUERY: {
                        if (!(field instanceof JCheckBox) && !(field instanceof RadioList)) {
                            ColourChange.setBackground(((JComponent)field), Constants.C_WHITE);
                        }
                        else {
                            ColourChange.setBackground(((JComponent)field), Constants.C_GRAY2);
                        }
                        if (!(field instanceof CharacterField)) {
                            WidgetState.set(field, Constants.FS_UPDATE);
                        }

                        break;
                    }
                }

            }
            else {
                if (state == Constants.FS_VIEWONLY) {
                    WidgetState.set(field, Constants.FS_DISABLED);
                }
            }
        }
    }

    /**
     * qq_setWindowState<p>
     * Method renamed by jcTOOL from SetWindowState to qq_setWindowState
     * because it conflicted with an attribute<p>
     * SetWindowState<br>
     *     SetWindowState sets the state of the fields in<br>
     *     the window to match the given window state of<br>
     *     Edit, Search, or View.<br>
     * <p>
     * @param state Type: int
     */
    public void qq_setWindowState(int state) {
        throw new Error(Error.GEN_UNIMPLEMENTED, "ExpressClassWindow.SetWindowState", this).getException();
    }

    /**
     * updateFolderResultSets<p>
     * UpdateFolderResultSets<br>
     *     UpdateFolderResultSets compiles all the changes to the<br>
     *     result set being managed by Folder windows (which<br>
     *     includes the selected folder if this window has a<br>
     *     folder/tab interface).<br>
     * <p>
     *     By default, a window has no links, so this method<br>
     *     does nothing by default.  When a generated window<br>
     *     has links, the class overrides this method to provide<br>
     *     the correct behavior.<br>
     * <p>
     * @param records Type: Array_Of_BusinessClass<BusinessClass> (Input) (default in Forte: NIL)
     */
    public void updateFolderResultSets(Array_Of_BusinessClass<BusinessClass> records) {
    }

    /**
     * updateNestedResultSets<p>
     * UpdateNestedResultSets<br>
     *     UpdateNestedResultSets compiles all the changes to the<br>
     *     result set being managed by nested windows.<br>
     * <p>
     *     By default, a window has no links, so this method<br>
     *     does nothing by default.  When a generated window<br>
     *     has nested links, the class overrides this method<br>
     *     to provide the correct behavior.<br>
     * <p>
     * @param records Type: Array_Of_BusinessClass<BusinessClass> (Input) (default in Forte: NIL)
     */
    public void updateNestedResultSets(Array_Of_BusinessClass<BusinessClass> records) {
    }

    /**
     * validateField<p>
     * ValidateField<br>
     *     ValidateField is a noop method which the express<br>
     *     developer may override to provide field validation<br>
     *     logic to their application.<br>
     * <p>
     * @param fieldNum Type: int
     * @param newValue Type: DataValue
     */
    public void validateField(int fieldNum, DataValue newValue) {
    }

    /**
     * validateRecord<p>
     * ValidateRecord<br>
     *     ValidateRecord is a noop method that the express<br>
     *     developer may override to provide validation logic<br>
     *     for the entire record before the user scrolls off<br>
     *     the record. It will run if the user attempts to:<br>
     * <p>
     *     o save the record,<br>
     *     o close the window,<br>
     *     o insert a new record,<br>
     *     o scroll off the record<br>
     * <p>
     */
    public void validateRecord() {
    }

    /**
     * validateWindowRecords<p>
     * ValidateWindowRecords<br>
     *     Validate the current window record as well as the<br>
     *     current record in any nested and folder windows.<br>
     * <p>
     *     By default, a window has no nested or folder links,<br>
     *     so this method does nothing by default.  When a generated<br>
     *     window has nested or folder links, the window class overrides<br>
     *     this method to provide the correct validation behavior.<br>
     * <p>
     */
    public void validateWindowRecords() {
    }

    // ------------------
    // Window Definitions
    // ------------------
    // <editor-fold defaultstate="collapsed" desc="Window Definitions">
    private int qq_defaultSet = 1;
    private int qq_msgNumber = 0;
    private int qq_msgSet = 0;
    public DataField qq_ModeText;
    public JMenu qq_ScrollMenu;
    public JMenu qq_editMenu;
    public JMenu qq_fileMenu;
    public JMenu qq_resultSetMenu;
    public JMenuBar qq_MainMenuBar;
    public JMenuItem qq_CancelMC;
    public JMenuItem qq_ClearMC;
    public JMenuItem qq_CloseMC;
    public JMenuItem qq_DeleteMC;
    public JMenuItem qq_EditCopyMC;
    public JMenuItem qq_EditCutMC;
    public JMenuItem qq_EditDeleteMC;
    public JMenuItem qq_EditPasteMC;
    public JMenuItem qq_EditSelectallMC;
    public JMenuItem qq_ExitAllMC;
    public JMenuItem qq_FirstMC;
    public JMenuItem qq_InsertMC;
    public JMenuItem qq_LastMC;
    public JMenuItem qq_NextMC;
    public JMenuItem qq_PreferencesMC;
    public JMenuItem qq_PrevMC;
    public JMenuItem qq_PrintMC;
    public JMenuItem qq_PrintSetupMC;
    public JMenuItem qq_RevertMC;
    public JMenuItem qq_SaveMC;
    public JMenuItem qq_SearchMC;
    public MenuList qq_ModeMC;
    public MenuSeparator qq_CancelSP;
    public MenuSeparator qq_ClearSP;
    public MenuSeparator qq_CloseSP;
    public MenuSeparator qq_ModeSP;
    public MenuSeparator qq_PreferencesSP;
    public MenuSeparator qq_PrintSP;
    public MenuSeparator qq_RevertSP;
    public MenuSeparator qq_SaveSP;
    public MenuSeparator qq_ScrollSP;
    public MenuSeparator qq_ScrollToSP;

    /**
     * qq_PreferencesMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_PreferencesMC() {
        if (qq_PreferencesMC == null) {
            qq_PreferencesMC = MenuFactory.newMenuItem("PreferencesMC", true);
            qq_PreferencesMC.setVerifyInputWhenFocusTarget(true);
            this.qq_PreferencesMC.setMnemonic( 'P' );
            qq_PreferencesMC.setText( "Preferences..." );
            UIutils.setMsgSet(qq_PreferencesMC, 60100);
            UIutils.setMsgNumber(qq_PreferencesMC, 663);
            qq_PreferencesMC.setVisible(true);
        }
        return qq_PreferencesMC;
    }

    public void setqq_PreferencesMC(JMenuItem value) {
        JMenuItem oldValue = qq_PreferencesMC;
        qq_PreferencesMC = value;
        this.qq_Listeners.firePropertyChange("qq_PreferencesMC", oldValue, value);
    }


    /**
     * qq_PreferencesSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_PreferencesSP() {
        if (qq_PreferencesSP == null) {
            qq_PreferencesSP = new MenuSeparator();
            qq_PreferencesSP.setName("PreferencesSP");
            qq_PreferencesSP.setVisible( true );
        }
        return qq_PreferencesSP;
    }

    public void setqq_PreferencesSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_PreferencesSP;
        qq_PreferencesSP = value;
        this.qq_Listeners.firePropertyChange("qq_PreferencesSP", oldValue, value);
    }


    /**
     * qq_RevertMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_RevertMC() {
        if (qq_RevertMC == null) {
            qq_RevertMC = MenuFactory.newMenuItem("RevertMC", true);
            qq_RevertMC.setVerifyInputWhenFocusTarget(true);
            this.qq_RevertMC.setMnemonic( 'v' );
            qq_RevertMC.setText( "Revert to Saved" );
            UIutils.setMsgSet(qq_RevertMC, 60100);
            UIutils.setMsgNumber(qq_RevertMC, 666);
            qq_RevertMC.setVisible(true);
        }
        return qq_RevertMC;
    }

    public void setqq_RevertMC(JMenuItem value) {
        JMenuItem oldValue = qq_RevertMC;
        qq_RevertMC = value;
        this.qq_Listeners.firePropertyChange("qq_RevertMC", oldValue, value);
    }


    /**
     * qq_RevertSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_RevertSP() {
        if (qq_RevertSP == null) {
            qq_RevertSP = new MenuSeparator();
            qq_RevertSP.setName("RevertSP");
            qq_RevertSP.setVisible( true );
        }
        return qq_RevertSP;
    }

    public void setqq_RevertSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_RevertSP;
        qq_RevertSP = value;
        this.qq_Listeners.firePropertyChange("qq_RevertSP", oldValue, value);
    }


    /**
     * qq_PrintMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_PrintMC() {
        if (qq_PrintMC == null) {
            qq_PrintMC = MenuFactory.newMenuItem("PrintMC", true);
            qq_PrintMC.setVerifyInputWhenFocusTarget(true);
            qq_PrintMC.addActionListener(new PrintActionListener(this));
            qq_PrintMC.setText( "Print..." );
            qq_PrintMC.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
            qq_PrintMC.setVisible(true);
        }
        return qq_PrintMC;
    }

    public void setqq_PrintMC(JMenuItem value) {
        JMenuItem oldValue = qq_PrintMC;
        qq_PrintMC = value;
        this.qq_Listeners.firePropertyChange("qq_PrintMC", oldValue, value);
    }


    /**
     * qq_PrintSetupMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_PrintSetupMC() {
        if (qq_PrintSetupMC == null) {
            qq_PrintSetupMC = MenuFactory.newMenuItem("PrintSetupMC", true);
            qq_PrintSetupMC.setVerifyInputWhenFocusTarget(true);
            qq_PrintSetupMC.addActionListener(new PrintSetupActionListener());
            qq_PrintSetupMC.setText( "Print Setup..." );
            qq_PrintSetupMC.setVisible(true);
        }
        return qq_PrintSetupMC;
    }

    public void setqq_PrintSetupMC(JMenuItem value) {
        JMenuItem oldValue = qq_PrintSetupMC;
        qq_PrintSetupMC = value;
        this.qq_Listeners.firePropertyChange("qq_PrintSetupMC", oldValue, value);
    }


    /**
     * qq_PrintSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_PrintSP() {
        if (qq_PrintSP == null) {
            qq_PrintSP = new MenuSeparator();
            qq_PrintSP.setName("PrintSP");
            qq_PrintSP.setVisible( true );
        }
        return qq_PrintSP;
    }

    public void setqq_PrintSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_PrintSP;
        qq_PrintSP = value;
        this.qq_Listeners.firePropertyChange("qq_PrintSP", oldValue, value);
    }


    /**
     * qq_SaveMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_SaveMC() {
        if (qq_SaveMC == null) {
            qq_SaveMC = MenuFactory.newMenuItem("SaveMC", true);
            qq_SaveMC.setVerifyInputWhenFocusTarget(true);
            this.qq_SaveMC.setMnemonic( 'S' );
            qq_SaveMC.setText( "Save" );
            UIutils.setMsgSet(qq_SaveMC, 60100);
            UIutils.setMsgNumber(qq_SaveMC, 667);
            qq_SaveMC.setVisible(true);
        }
        return qq_SaveMC;
    }

    public void setqq_SaveMC(JMenuItem value) {
        JMenuItem oldValue = qq_SaveMC;
        qq_SaveMC = value;
        this.qq_Listeners.firePropertyChange("qq_SaveMC", oldValue, value);
    }


    /**
     * qq_SaveSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_SaveSP() {
        if (qq_SaveSP == null) {
            qq_SaveSP = new MenuSeparator();
            qq_SaveSP.setName("SaveSP");
            qq_SaveSP.setVisible( true );
        }
        return qq_SaveSP;
    }

    public void setqq_SaveSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_SaveSP;
        qq_SaveSP = value;
        this.qq_Listeners.firePropertyChange("qq_SaveSP", oldValue, value);
    }


    /**
     * qq_CancelMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_CancelMC() {
        if (qq_CancelMC == null) {
            qq_CancelMC = MenuFactory.newMenuItem("CancelMC", false);
            qq_CancelMC.setVerifyInputWhenFocusTarget(false);
            this.qq_CancelMC.setMnemonic( 'n' );
            qq_CancelMC.setText( "Cancel" );
            UIutils.setMsgSet(qq_CancelMC, 60100);
            UIutils.setMsgNumber(qq_CancelMC, 651);
            qq_CancelMC.setVisible(true);
        }
        return qq_CancelMC;
    }

    public void setqq_CancelMC(JMenuItem value) {
        JMenuItem oldValue = qq_CancelMC;
        qq_CancelMC = value;
        this.qq_Listeners.firePropertyChange("qq_CancelMC", oldValue, value);
    }


    /**
     * qq_CancelSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_CancelSP() {
        if (qq_CancelSP == null) {
            qq_CancelSP = new MenuSeparator();
            qq_CancelSP.setName("CancelSP");
            qq_CancelSP.setVisible( true );
        }
        return qq_CancelSP;
    }

    public void setqq_CancelSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_CancelSP;
        qq_CancelSP = value;
        this.qq_Listeners.firePropertyChange("qq_CancelSP", oldValue, value);
    }


    /**
     * qq_CloseMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_CloseMC() {
        if (qq_CloseMC == null) {
            qq_CloseMC = MenuFactory.newMenuItem("CloseMC", true);
            qq_CloseMC.setVerifyInputWhenFocusTarget(true);
            qq_CloseMC.setText( "Close" );
            qq_CloseMC.setVisible(true);
        }
        return qq_CloseMC;
    }

    public void setqq_CloseMC(JMenuItem value) {
        JMenuItem oldValue = qq_CloseMC;
        qq_CloseMC = value;
        this.qq_Listeners.firePropertyChange("qq_CloseMC", oldValue, value);
    }


    /**
     * qq_CloseSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_CloseSP() {
        if (qq_CloseSP == null) {
            qq_CloseSP = new MenuSeparator();
            qq_CloseSP.setName("CloseSP");
            qq_CloseSP.setVisible( true );
        }
        return qq_CloseSP;
    }

    public void setqq_CloseSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_CloseSP;
        qq_CloseSP = value;
        this.qq_Listeners.firePropertyChange("qq_CloseSP", oldValue, value);
    }


    /**
     * qq_ExitAllMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_ExitAllMC() {
        if (qq_ExitAllMC == null) {
            qq_ExitAllMC = MenuFactory.newMenuItem("ExitAllMC", true);
            qq_ExitAllMC.setVerifyInputWhenFocusTarget(true);
            this.qq_ExitAllMC.setMnemonic( 'A' );
            qq_ExitAllMC.setText( "Exit All" );
            UIutils.setMsgSet(qq_ExitAllMC, 60100);
            UIutils.setMsgNumber(qq_ExitAllMC, 655);
            qq_ExitAllMC.setVisible(true);
        }
        return qq_ExitAllMC;
    }

    public void setqq_ExitAllMC(JMenuItem value) {
        JMenuItem oldValue = qq_ExitAllMC;
        qq_ExitAllMC = value;
        this.qq_Listeners.firePropertyChange("qq_ExitAllMC", oldValue, value);
    }


    /**
     * qq_fileMenu: transformed from: qqds_Submenu
     */
    public JMenu getqq_fileMenu() {
        if (qq_fileMenu == null) {
            qq_fileMenu = new JMenu();
            qq_fileMenu.setName("fileMenu");
            this.qq_fileMenu.setMnemonic( 'F' );
            qq_fileMenu.setText( "File" );
            UIutils.setMsgSet(qq_fileMenu, 60100);
            UIutils.setMsgNumber(qq_fileMenu, 656);
            qq_fileMenu.setVisible(true);
            qq_fileMenu.add(getqq_PreferencesMC());
            qq_fileMenu.add(getqq_PreferencesSP());
            qq_fileMenu.add(getqq_RevertMC());
            qq_fileMenu.add(getqq_RevertSP());
            qq_fileMenu.add(getqq_PrintMC());
            qq_fileMenu.add(getqq_PrintSetupMC());
            qq_fileMenu.add(getqq_PrintSP());
            qq_fileMenu.add(getqq_SaveMC());
            qq_fileMenu.add(getqq_SaveSP());
            qq_fileMenu.add(getqq_CancelMC());
            qq_fileMenu.add(getqq_CancelSP());
            qq_fileMenu.add(getqq_CloseMC());
            qq_fileMenu.add(getqq_CloseSP());
            qq_fileMenu.add(getqq_ExitAllMC());
        }
        return qq_fileMenu;
    }


    /**
     * qq_EditCutMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_EditCutMC() {
        if (qq_EditCutMC == null) {
            qq_EditCutMC = MenuFactory.newMenuItem("EditCutMC", true);
            qq_EditCutMC.setVerifyInputWhenFocusTarget(true);
            qq_EditCutMC.addActionListener(new DefaultEditorKit.CutAction());
            qq_EditCutMC.setRequestFocusEnabled(false);
            qq_EditCutMC.setText( "Cut" );
            qq_EditCutMC.setVisible(true);
        }
        return qq_EditCutMC;
    }

    public void setqq_EditCutMC(JMenuItem value) {
        JMenuItem oldValue = qq_EditCutMC;
        qq_EditCutMC = value;
        this.qq_Listeners.firePropertyChange("qq_EditCutMC", oldValue, value);
    }


    /**
     * qq_EditCopyMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_EditCopyMC() {
        if (qq_EditCopyMC == null) {
            qq_EditCopyMC = MenuFactory.newMenuItem("EditCopyMC", true);
            qq_EditCopyMC.setVerifyInputWhenFocusTarget(true);
            qq_EditCopyMC.addActionListener(new DefaultEditorKit.CopyAction());
            qq_EditCopyMC.setRequestFocusEnabled(false);
            qq_EditCopyMC.setText( "Copy" );
            qq_EditCopyMC.setVisible(true);
        }
        return qq_EditCopyMC;
    }

    public void setqq_EditCopyMC(JMenuItem value) {
        JMenuItem oldValue = qq_EditCopyMC;
        qq_EditCopyMC = value;
        this.qq_Listeners.firePropertyChange("qq_EditCopyMC", oldValue, value);
    }


    /**
     * qq_EditPasteMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_EditPasteMC() {
        if (qq_EditPasteMC == null) {
            qq_EditPasteMC = MenuFactory.newMenuItem("EditPasteMC", true);
            qq_EditPasteMC.setVerifyInputWhenFocusTarget(true);
            qq_EditPasteMC.addActionListener(new DefaultEditorKit.PasteAction());
            qq_EditPasteMC.setRequestFocusEnabled(false);
            qq_EditPasteMC.setText( "Paste" );
            qq_EditPasteMC.setVisible(true);
        }
        return qq_EditPasteMC;
    }

    public void setqq_EditPasteMC(JMenuItem value) {
        JMenuItem oldValue = qq_EditPasteMC;
        qq_EditPasteMC = value;
        this.qq_Listeners.firePropertyChange("qq_EditPasteMC", oldValue, value);
    }


    /**
     * qq_EditDeleteMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_EditDeleteMC() {
        if (qq_EditDeleteMC == null) {
            qq_EditDeleteMC = MenuFactory.newMenuItem("EditDeleteMC", true);
            qq_EditDeleteMC.setVerifyInputWhenFocusTarget(true);
            qq_EditDeleteMC.setText( "Delete" );
            qq_EditDeleteMC.setVisible(true);
        }
        return qq_EditDeleteMC;
    }

    public void setqq_EditDeleteMC(JMenuItem value) {
        JMenuItem oldValue = qq_EditDeleteMC;
        qq_EditDeleteMC = value;
        this.qq_Listeners.firePropertyChange("qq_EditDeleteMC", oldValue, value);
    }


    /**
     * qq_EditSelectallMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_EditSelectallMC() {
        if (qq_EditSelectallMC == null) {
            qq_EditSelectallMC = MenuFactory.newMenuItem("EditSelectallMC", true);
            qq_EditSelectallMC.setVerifyInputWhenFocusTarget(true);
            qq_EditSelectallMC.addActionListener(new UIutils.SelectAllAction());
            qq_EditSelectallMC.setText( "Select All" );
            qq_EditSelectallMC.setVisible(true);
        }
        return qq_EditSelectallMC;
    }

    public void setqq_EditSelectallMC(JMenuItem value) {
        JMenuItem oldValue = qq_EditSelectallMC;
        qq_EditSelectallMC = value;
        this.qq_Listeners.firePropertyChange("qq_EditSelectallMC", oldValue, value);
    }


    /**
     * qq_editMenu: transformed from: qqds_Submenu
     */
    public JMenu getqq_editMenu() {
        if (qq_editMenu == null) {
            qq_editMenu = new JMenu();
            qq_editMenu.setName("editMenu");
            this.qq_editMenu.setMnemonic( 'E' );
            qq_editMenu.setText( "Edit" );
            UIutils.setMsgSet(qq_editMenu, 60100);
            UIutils.setMsgNumber(qq_editMenu, 654);
            qq_editMenu.setVisible(true);
            qq_editMenu.add(getqq_EditCutMC());
            qq_editMenu.add(getqq_EditCopyMC());
            qq_editMenu.add(getqq_EditPasteMC());
            qq_editMenu.add(getqq_EditDeleteMC());
            qq_editMenu.add(getqq_EditSelectallMC());
        }
        return qq_editMenu;
    }


    /**
     * qq_ModeMC: transformed from: qqds_MenuList
     */
    public MenuList getqq_ModeMC() {
        if (qq_ModeMC == null) {
            qq_ModeMC = new MenuList();
            qq_ModeMC.setName("ModeMC");
            String[] names = {"Edit Mode", "Search Mode"};
            Array_Of_ListElement<ListElement> elements = new Array_Of_ListElement<ListElement>();
            ListElement elements1 = new ListElement( 1, names[0], ListElement.qq_Resolver.cINTEGERVALUE_TEXTVALUE );
            elements1.setTextValueMsgNum( 660 );
            elements.add( elements1 );
            ListElement elements2 = new ListElement( 2, names[1], ListElement.qq_Resolver.cINTEGERVALUE_TEXTVALUE );
            elements2.setTextValueMsgNum( 661 );
            elements.add( elements2 );
            getBindingManager().bindComponent(qq_ModeMC, "modeMC", elements);
        }
        return qq_ModeMC;
    }

    public void setqq_ModeMC(MenuList value) {
        MenuList oldValue = qq_ModeMC;
        qq_ModeMC = value;
        this.qq_Listeners.firePropertyChange("qq_ModeMC", oldValue, value);
    }


    /**
     * qq_ModeSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_ModeSP() {
        if (qq_ModeSP == null) {
            qq_ModeSP = new MenuSeparator();
            qq_ModeSP.setName("ModeSP");
            qq_ModeSP.setVisible( true );
        }
        return qq_ModeSP;
    }

    public void setqq_ModeSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_ModeSP;
        qq_ModeSP = value;
        this.qq_Listeners.firePropertyChange("qq_ModeSP", oldValue, value);
    }


    /**
     * qq_ClearMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_ClearMC() {
        if (qq_ClearMC == null) {
            qq_ClearMC = MenuFactory.newMenuItem("ClearMC", false);
            qq_ClearMC.setVerifyInputWhenFocusTarget(false);
            this.qq_ClearMC.setMnemonic( 'C' );
            qq_ClearMC.setText( "Clear Result Set" );
            UIutils.setMsgSet(qq_ClearMC, 60100);
            UIutils.setMsgNumber(qq_ClearMC, 652);
            qq_ClearMC.setVisible(true);
        }
        return qq_ClearMC;
    }

    public void setqq_ClearMC(JMenuItem value) {
        JMenuItem oldValue = qq_ClearMC;
        qq_ClearMC = value;
        this.qq_Listeners.firePropertyChange("qq_ClearMC", oldValue, value);
    }


    /**
     * qq_ClearSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_ClearSP() {
        if (qq_ClearSP == null) {
            qq_ClearSP = new MenuSeparator();
            qq_ClearSP.setName("ClearSP");
            qq_ClearSP.setVisible( true );
        }
        return qq_ClearSP;
    }

    public void setqq_ClearSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_ClearSP;
        qq_ClearSP = value;
        this.qq_Listeners.firePropertyChange("qq_ClearSP", oldValue, value);
    }


    /**
     * qq_InsertMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_InsertMC() {
        if (qq_InsertMC == null) {
            qq_InsertMC = MenuFactory.newMenuItem("InsertMC", true);
            qq_InsertMC.setVerifyInputWhenFocusTarget(true);
            this.qq_InsertMC.setMnemonic( 'I' );
            qq_InsertMC.setText( "Insert Record" );
            UIutils.setMsgSet(qq_InsertMC, 60100);
            UIutils.setMsgNumber(qq_InsertMC, 658);
            qq_InsertMC.setVisible(true);
        }
        return qq_InsertMC;
    }

    public void setqq_InsertMC(JMenuItem value) {
        JMenuItem oldValue = qq_InsertMC;
        qq_InsertMC = value;
        this.qq_Listeners.firePropertyChange("qq_InsertMC", oldValue, value);
    }


    /**
     * qq_DeleteMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_DeleteMC() {
        if (qq_DeleteMC == null) {
            qq_DeleteMC = MenuFactory.newMenuItem("DeleteMC", false);
            qq_DeleteMC.setVerifyInputWhenFocusTarget(false);
            this.qq_DeleteMC.setMnemonic( 'D' );
            qq_DeleteMC.setText( "Delete Record" );
            UIutils.setMsgSet(qq_DeleteMC, 60100);
            UIutils.setMsgNumber(qq_DeleteMC, 653);
            qq_DeleteMC.setVisible(true);
        }
        return qq_DeleteMC;
    }

    public void setqq_DeleteMC(JMenuItem value) {
        JMenuItem oldValue = qq_DeleteMC;
        qq_DeleteMC = value;
        this.qq_Listeners.firePropertyChange("qq_DeleteMC", oldValue, value);
    }


    /**
     * qq_ScrollToSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_ScrollToSP() {
        if (qq_ScrollToSP == null) {
            qq_ScrollToSP = new MenuSeparator();
            qq_ScrollToSP.setName("ScrollToSP");
            qq_ScrollToSP.setVisible( true );
        }
        return qq_ScrollToSP;
    }

    public void setqq_ScrollToSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_ScrollToSP;
        qq_ScrollToSP = value;
        this.qq_Listeners.firePropertyChange("qq_ScrollToSP", oldValue, value);
    }


    /**
     * qq_FirstMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_FirstMC() {
        if (qq_FirstMC == null) {
            qq_FirstMC = MenuFactory.newMenuItem("FirstMC", true);
            qq_FirstMC.setVerifyInputWhenFocusTarget(true);
            this.qq_FirstMC.setMnemonic( 'F' );
            qq_FirstMC.setText( "First Record" );
            UIutils.setMsgSet(qq_FirstMC, 60100);
            UIutils.setMsgNumber(qq_FirstMC, 657);
            qq_FirstMC.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
            qq_FirstMC.setVisible(true);
        }
        return qq_FirstMC;
    }

    public void setqq_FirstMC(JMenuItem value) {
        JMenuItem oldValue = qq_FirstMC;
        qq_FirstMC = value;
        this.qq_Listeners.firePropertyChange("qq_FirstMC", oldValue, value);
    }


    /**
     * qq_LastMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_LastMC() {
        if (qq_LastMC == null) {
            qq_LastMC = MenuFactory.newMenuItem("LastMC", true);
            qq_LastMC.setVerifyInputWhenFocusTarget(true);
            this.qq_LastMC.setMnemonic( 'L' );
            qq_LastMC.setText( "Last Record" );
            UIutils.setMsgSet(qq_LastMC, 60100);
            UIutils.setMsgNumber(qq_LastMC, 659);
            qq_LastMC.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
            qq_LastMC.setVisible(true);
        }
        return qq_LastMC;
    }

    public void setqq_LastMC(JMenuItem value) {
        JMenuItem oldValue = qq_LastMC;
        qq_LastMC = value;
        this.qq_Listeners.firePropertyChange("qq_LastMC", oldValue, value);
    }


    /**
     * qq_ScrollSP: transformed from: qqds_MenuSeparator
     */
    public MenuSeparator getqq_ScrollSP() {
        if (qq_ScrollSP == null) {
            qq_ScrollSP = new MenuSeparator();
            qq_ScrollSP.setName("ScrollSP");
            qq_ScrollSP.setVisible( true );
        }
        return qq_ScrollSP;
    }

    public void setqq_ScrollSP(MenuSeparator value) {
        MenuSeparator oldValue = qq_ScrollSP;
        qq_ScrollSP = value;
        this.qq_Listeners.firePropertyChange("qq_ScrollSP", oldValue, value);
    }


    /**
     * qq_PrevMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_PrevMC() {
        if (qq_PrevMC == null) {
            qq_PrevMC = MenuFactory.newMenuItem("PrevMC", true);
            qq_PrevMC.setVerifyInputWhenFocusTarget(true);
            this.qq_PrevMC.setMnemonic( 'P' );
            qq_PrevMC.setText( "Previous Record" );
            UIutils.setMsgSet(qq_PrevMC, 60100);
            UIutils.setMsgNumber(qq_PrevMC, 664);
            qq_PrevMC.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
            qq_PrevMC.setVisible(true);
        }
        return qq_PrevMC;
    }

    public void setqq_PrevMC(JMenuItem value) {
        JMenuItem oldValue = qq_PrevMC;
        qq_PrevMC = value;
        this.qq_Listeners.firePropertyChange("qq_PrevMC", oldValue, value);
    }


    /**
     * qq_NextMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_NextMC() {
        if (qq_NextMC == null) {
            qq_NextMC = MenuFactory.newMenuItem("NextMC", true);
            qq_NextMC.setVerifyInputWhenFocusTarget(true);
            this.qq_NextMC.setMnemonic( 'N' );
            qq_NextMC.setText( "Next Record" );
            UIutils.setMsgSet(qq_NextMC, 60100);
            UIutils.setMsgNumber(qq_NextMC, 662);
            qq_NextMC.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
            qq_NextMC.setVisible(true);
        }
        return qq_NextMC;
    }

    public void setqq_NextMC(JMenuItem value) {
        JMenuItem oldValue = qq_NextMC;
        qq_NextMC = value;
        this.qq_Listeners.firePropertyChange("qq_NextMC", oldValue, value);
    }


    /**
     * qq_ScrollMenu: transformed from: qqds_Submenu
     */
    public JMenu getqq_ScrollMenu() {
        if (qq_ScrollMenu == null) {
            qq_ScrollMenu = new JMenu();
            qq_ScrollMenu.setName("ScrollMenu");
            this.qq_ScrollMenu.setMnemonic( 'T' );
            qq_ScrollMenu.setText( "Scroll To" );
            UIutils.setMsgSet(qq_ScrollMenu, 60100);
            UIutils.setMsgNumber(qq_ScrollMenu, 668);
            qq_ScrollMenu.setVisible(true);
            qq_ScrollMenu.add(getqq_FirstMC());
            qq_ScrollMenu.add(getqq_LastMC());
            qq_ScrollMenu.add(getqq_ScrollSP());
            qq_ScrollMenu.add(getqq_PrevMC());
            qq_ScrollMenu.add(getqq_NextMC());
        }
        return qq_ScrollMenu;
    }


    /**
     * qq_SearchMC: transformed from: qqds_MenuCommand
     */
    public JMenuItem getqq_SearchMC() {
        if (qq_SearchMC == null) {
            qq_SearchMC = MenuFactory.newMenuItem("SearchMC", true);
            qq_SearchMC.setVerifyInputWhenFocusTarget(true);
            this.qq_SearchMC.setMnemonic( 'r' );
            qq_SearchMC.setText( "Search" );
            UIutils.setMsgSet(qq_SearchMC, 60100);
            UIutils.setMsgNumber(qq_SearchMC, 669);
            qq_SearchMC.setVisible(true);
        }
        return qq_SearchMC;
    }

    public void setqq_SearchMC(JMenuItem value) {
        JMenuItem oldValue = qq_SearchMC;
        qq_SearchMC = value;
        this.qq_Listeners.firePropertyChange("qq_SearchMC", oldValue, value);
    }


    /**
     * qq_resultSetMenu: transformed from: qqds_Submenu
     */
    public JMenu getqq_resultSetMenu() {
        if (qq_resultSetMenu == null) {
            qq_resultSetMenu = new JMenu();
            qq_resultSetMenu.setName("resultSetMenu");
            this.qq_resultSetMenu.setMnemonic( 'R' );
            qq_resultSetMenu.setText( "Result Set" );
            UIutils.setMsgSet(qq_resultSetMenu, 60100);
            UIutils.setMsgNumber(qq_resultSetMenu, 665);
            qq_resultSetMenu.setVisible(true);
            qq_resultSetMenu.add(getqq_ModeMC());
            qq_resultSetMenu.add(getqq_ModeSP());
            qq_resultSetMenu.add(getqq_ClearMC());
            qq_resultSetMenu.add(getqq_ClearSP());
            qq_resultSetMenu.add(getqq_InsertMC());
            qq_resultSetMenu.add(getqq_DeleteMC());
            qq_resultSetMenu.add(getqq_ScrollToSP());
            qq_resultSetMenu.add(getqq_ScrollMenu());
            qq_resultSetMenu.add(getqq_SearchMC());
        }
        return qq_resultSetMenu;
    }


    /**
     * qq_MainMenuBar: transformed from: qqds_MenuBar
     */
    public JMenuBar getqq_MenuBar() {
        if (qq_MainMenuBar == null) {
            qq_MainMenuBar = MenuFactory.newMenuBar();
            qq_MainMenuBar.setName("MainMenuBar");
            qq_MainMenuBar.setBorderPainted(false);
            this.qq_MainMenuBar.add(getqq_fileMenu());
            this.qq_MainMenuBar.add(getqq_editMenu());
            this.qq_MainMenuBar.add(getqq_resultSetMenu());
        }
        return qq_MainMenuBar;
    }

    public void setqq_MainMenuBar(JMenuBar value) {
        JMenuBar oldValue = qq_MainMenuBar;
        qq_MainMenuBar = value;
        this.qq_Listeners.firePropertyChange("qq_MainMenuBar", oldValue, value);
    }


    /**
     * qq_DummyGraphic: transformed from: qqds_TextGraphic
     * TagId=65537
     * isInherited=TRUE
     */
    public TextGraphic getqq_DummyGraphic() {
        if (qq_DummyGraphic == null) {
            super.getqq_DummyGraphic();
            // OPTIONAL UIutils.reloadLabelText(qq_DummyGraphic, mcat);
        }
        return qq_DummyGraphic;
    }

    public void setqq_DummyGraphic(TextGraphic value) {
        TextGraphic oldValue = qq_DummyGraphic;
        qq_DummyGraphic = value;
        this.qq_Listeners.firePropertyChange("qq_DummyGraphic", oldValue, value);
    }

    /**
     * qq_DataGrid: transformed from: qqds_GridField
     * TagId=131067
     * isInherited=TRUE
     * In forte this was a 1x1 grid field.
     * There are no cell margins set
     * The width policy is set to Parent, and the height policy is set to Parent.
     */
    protected void setqq_DataGridProperties() {
        super.setqq_DataGridProperties();
        qq_DataGrid.setHeightPolicy(Constants.SP_TO_PARENT);
        qq_DataGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_DataGrid() {
        if (qq_DataGrid == null) {
            qq_DataGrid = CompoundFieldFactory.newGridField("DataGrid", false);
            setqq_DataGridProperties();
            qq_DataGrid.setBackground(null);
            // OPTIONAL qq_DataGrid.setSize(new Dimension(404, 59));
            // OPTIONAL qq_DataGrid.setMinimumSize(new Dimension(404, 59));
            // OPTIONAL qq_DataGrid.setPreferredSize(new Dimension(404, 59));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.WEST; // Gravity - original: CG_MIDDLELEFT
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_DataGrid.add( getqq_DummyGraphic(), qq_gbc );

        }
        return qq_DataGrid;
    }

    public void setqq_DataGrid(GridField value) {
        GridField oldValue = qq_DataGrid;
        qq_DataGrid = value;
        this.qq_Listeners.firePropertyChange("qq_DataGrid", oldValue, value);
    }

    /**
     * qq_InsertBC: transformed from: qqds_PushButton
     * TagId=131037
     * isInherited=TRUE
     */
    public JButton getqq_InsertBC() {
        if (qq_InsertBC == null) {
            super.getqq_InsertBC();
            // OPTIONAL qq_InsertBC.setSize(new Dimension(45, 21));
            qq_InsertBC.setMinimumSize(new Dimension(45, 21));
            qq_InsertBC.setPreferredSize(new Dimension(45, 21));
        }
        return qq_InsertBC;
    }

    public void setqq_InsertBC(JButton value) {
        JButton oldValue = qq_InsertBC;
        qq_InsertBC = value;
        this.qq_Listeners.firePropertyChange("qq_InsertBC", oldValue, value);
    }

    /**
     * qq_DeleteBC: transformed from: qqds_PushButton
     * TagId=131036
     * isInherited=TRUE
     */
    public JButton getqq_DeleteBC() {
        if (qq_DeleteBC == null) {
            super.getqq_DeleteBC();
            // OPTIONAL qq_DeleteBC.setSize(new Dimension(45, 21));
            qq_DeleteBC.setMinimumSize(new Dimension(45, 21));
            qq_DeleteBC.setPreferredSize(new Dimension(45, 21));
        }
        return qq_DeleteBC;
    }

    public void setqq_DeleteBC(JButton value) {
        JButton oldValue = qq_DeleteBC;
        qq_DeleteBC = value;
        this.qq_Listeners.firePropertyChange("qq_DeleteBC", oldValue, value);
    }

    /**
     * qq_SideBCGrid: transformed from: qqds_GridField
     * TagId=131038
     * isInherited=TRUE
     * In forte this was a 1x2 grid field.
     * The cell margins are all 50 mils
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_SideBCGridProperties() {
        super.setqq_SideBCGridProperties();
        qq_SideBCGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_SideBCGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_SideBCGrid() {
        if (qq_SideBCGrid == null) {
            qq_SideBCGrid = CompoundFieldFactory.newGridField("SideBCGrid", false);
            setqq_SideBCGridProperties();
            qq_SideBCGrid.setBackground(null);
            // OPTIONAL qq_SideBCGrid.setSize(new Dimension(55, 59));
            // OPTIONAL qq_SideBCGrid.setMinimumSize(new Dimension(55, 59));
            // OPTIONAL qq_SideBCGrid.setPreferredSize(new Dimension(55, 59));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc.insets = new Insets(2, 2, 2, 2); // Top, Left, Bottom, Right Margin
            qq_SideBCGrid.add( getqq_InsertBC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 0; // Column 1
            qq_gbc1.gridy = 1; // Row 2
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc1.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc1.insets = new Insets(2, 2, 2, 2); // Top, Left, Bottom, Right Margin
            qq_SideBCGrid.add( getqq_DeleteBC(), qq_gbc1 );

        }
        return qq_SideBCGrid;
    }

    public void setqq_SideBCGrid(GridField value) {
        GridField oldValue = qq_SideBCGrid;
        qq_SideBCGrid = value;
        this.qq_Listeners.firePropertyChange("qq_SideBCGrid", oldValue, value);
    }

    /**
     * qq_TopContentsGrid: transformed from: qqds_GridField
     * TagId=131068
     * isInherited=TRUE
     * In forte this was a 2x1 grid field.
     * There are no cell margins set
     * The width policy is set to Parent, and the height policy is set to Parent.
     */
    protected void setqq_TopContentsGridProperties() {
        super.setqq_TopContentsGridProperties();
        qq_TopContentsGrid.setHeightPolicy(Constants.SP_TO_PARENT);
        qq_TopContentsGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_TopContentsGrid() {
        if (qq_TopContentsGrid == null) {
            qq_TopContentsGrid = CompoundFieldFactory.newGridField("TopContentsGrid", false);
            setqq_TopContentsGridProperties();
            qq_TopContentsGrid.setBackground(null);
            // OPTIONAL qq_TopContentsGrid.setSize(new Dimension(460, 59));
            // OPTIONAL qq_TopContentsGrid.setMinimumSize(new Dimension(460, 59));
            // OPTIONAL qq_TopContentsGrid.setPreferredSize(new Dimension(460, 59));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 1;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.NORTHWEST; // Gravity - original: CG_TOPLEFT
            qq_gbc.fill = GridBagConstraints.BOTH; // Size to parent - original: H & W = SP_TO_PARENT
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_TopContentsGrid.add( getqq_DataGrid(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.NORTHEAST; // Gravity - original: CG_TOPRIGHT
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_TopContentsGrid.add( getqq_SideBCGrid(), qq_gbc1 );

        }
        return qq_TopContentsGrid;
    }

    public void setqq_TopContentsGrid(GridField value) {
        GridField oldValue = qq_TopContentsGrid;
        qq_TopContentsGrid = value;
        this.qq_Listeners.firePropertyChange("qq_TopContentsGrid", oldValue, value);
    }

    /**
     * qq_ClearBC: transformed from: qqds_PushButton
     * TagId=131015
     * isInherited=TRUE
     */
    public JButton getqq_ClearBC() {
        if (qq_ClearBC == null) {
            super.getqq_ClearBC();
            LayoutManagerHelper.setWidthPartner(qq_ClearBC, getqq_OKBC());
            // OPTIONAL qq_ClearBC.setSize(new Dimension(48, 21));
            qq_ClearBC.setMinimumSize(new Dimension(48, 21));
            qq_ClearBC.setPreferredSize(new Dimension(48, 21));
        }
        return qq_ClearBC;
    }

    public void setqq_ClearBC(JButton value) {
        JButton oldValue = qq_ClearBC;
        qq_ClearBC = value;
        this.qq_Listeners.firePropertyChange("qq_ClearBC", oldValue, value);
    }

    /**
     * qq_CancelBC: transformed from: qqds_PushButton
     * TagId=131019
     * isInherited=TRUE
     */
    public JButton getqq_CancelBC() {
        if (qq_CancelBC == null) {
            super.getqq_CancelBC();
            LayoutManagerHelper.setWidthPartner(qq_CancelBC, getqq_SearchBC());
            // OPTIONAL qq_CancelBC.setSize(new Dimension(48, 21));
            qq_CancelBC.setMinimumSize(new Dimension(48, 21));
            qq_CancelBC.setPreferredSize(new Dimension(48, 21));
        }
        return qq_CancelBC;
    }

    public void setqq_CancelBC(JButton value) {
        JButton oldValue = qq_CancelBC;
        qq_CancelBC = value;
        this.qq_Listeners.firePropertyChange("qq_CancelBC", oldValue, value);
    }

    /**
     * qq_SearchBC: transformed from: qqds_PushButton
     * TagId=131021
     * isInherited=TRUE
     */
    public JButton getqq_SearchBC() {
        if (qq_SearchBC == null) {
            super.getqq_SearchBC();
            LayoutManagerHelper.setWidthPartner(qq_SearchBC, getqq_ClearBC());
            // OPTIONAL qq_SearchBC.setSize(new Dimension(48, 21));
            qq_SearchBC.setMinimumSize(new Dimension(48, 21));
            qq_SearchBC.setPreferredSize(new Dimension(48, 21));
        }
        return qq_SearchBC;
    }

    public void setqq_SearchBC(JButton value) {
        JButton oldValue = qq_SearchBC;
        qq_SearchBC = value;
        this.qq_Listeners.firePropertyChange("qq_SearchBC", oldValue, value);
    }

    /**
     * qq_OKBC: transformed from: qqds_PushButton
     * TagId=131022
     * isInherited=TRUE
     */
    public JButton getqq_OKBC() {
        if (qq_OKBC == null) {
            super.getqq_OKBC();
            LayoutManagerHelper.setWidthPartner(qq_OKBC, getqq_CancelBC());
            // OPTIONAL qq_OKBC.setSize(new Dimension(48, 21));
            qq_OKBC.setMinimumSize(new Dimension(48, 21));
            qq_OKBC.setPreferredSize(new Dimension(48, 21));
        }
        return qq_OKBC;
    }

    public void setqq_OKBC(JButton value) {
        JButton oldValue = qq_OKBC;
        qq_OKBC = value;
        this.qq_Listeners.firePropertyChange("qq_OKBC", oldValue, value);
    }

    /**
     * qq_IndexBC: transformed from: qqds_DataField
     * TagId=131030
     * isInherited=TRUE
     */
    public DataField getqq_IndexBC() {
        if (qq_IndexBC == null) {
            // Mask type: MK_NONE
            super.getqq_IndexBC();
            qq_IndexBC.setOriginalFormatText(null);
            qq_IndexBC.setHorizontalAlignment(JTextField.RIGHT);
            getBindingManager().bindComponent(qq_IndexBC, "indexBC");
            // OPTIONAL qq_IndexBC.setSize(new Dimension(38, 19));
            qq_IndexBC.setMinimumSize(new Dimension(38, 19));
            qq_IndexBC.setPreferredSize(new Dimension(38, 19));
        }
        return qq_IndexBC;
    }

    public void setqq_IndexBC(DataField value) {
        DataField oldValue = qq_IndexBC;
        qq_IndexBC = value;
        this.qq_Listeners.firePropertyChange("qq_IndexBC", oldValue, value);
    }

    /**
     * qq_MaxIndexBC: transformed from: qqds_DataField
     * TagId=131028
     * isInherited=TRUE
     */
    public DataField getqq_MaxIndexBC() {
        if (qq_MaxIndexBC == null) {
            // Mask type: MK_NONE
            super.getqq_MaxIndexBC();
            qq_MaxIndexBC.setOriginalFormatText(null);
            qq_MaxIndexBC.setHorizontalAlignment(JTextField.LEFT);
            qq_MaxIndexBC.setBorder(null);
            qq_MaxIndexBC.setBackground(null);
            getBindingManager().bindComponent(qq_MaxIndexBC, "maxIndexBC");
        }
        return qq_MaxIndexBC;
    }

    public void setqq_MaxIndexBC(DataField value) {
        DataField oldValue = qq_MaxIndexBC;
        qq_MaxIndexBC = value;
        this.qq_Listeners.firePropertyChange("qq_MaxIndexBC", oldValue, value);
    }

    /**
     * qq_OfBC: transformed from: qqds_TextGraphic
     * TagId=65538
     * isInherited=TRUE
     */
    public TextGraphic getqq_OfBC() {
        if (qq_OfBC == null) {
            super.getqq_OfBC();
            UIutils.setMsgSet(qq_OfBC, 60100);
            UIutils.setMsgNumber(qq_OfBC, 606);
            // OPTIONAL UIutils.reloadLabelText(qq_OfBC, mcat);
        }
        return qq_OfBC;
    }

    public void setqq_OfBC(TextGraphic value) {
        TextGraphic oldValue = qq_OfBC;
        qq_OfBC = value;
        this.qq_Listeners.firePropertyChange("qq_OfBC", oldValue, value);
    }

    /**
     * qq_IndexesBCGrid: transformed from: qqds_GridField
     * TagId=131031
     * isInherited=TRUE
     * In forte this was a 3x1 grid field.
     * There are no cell margins set
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_IndexesBCGridProperties() {
        super.setqq_IndexesBCGridProperties();
        qq_IndexesBCGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_IndexesBCGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_IndexesBCGrid() {
        if (qq_IndexesBCGrid == null) {
            qq_IndexesBCGrid = CompoundFieldFactory.newGridField("IndexesBCGrid", false);
            setqq_IndexesBCGridProperties();
            qq_IndexesBCGrid.setBackground(null);
            // OPTIONAL qq_IndexesBCGrid.setSize(new Dimension(93, 19));
            // OPTIONAL qq_IndexesBCGrid.setMinimumSize(new Dimension(93, 19));
            // OPTIONAL qq_IndexesBCGrid.setPreferredSize(new Dimension(93, 19));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_IndexesBCGrid.add( getqq_IndexBC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 4, 0, 4); // Top, Left, Bottom, Right Margin
            qq_IndexesBCGrid.add( getqq_OfBC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_IndexesBCGrid.add( getqq_MaxIndexBC(), qq_gbc2 );

        }
        return qq_IndexesBCGrid;
    }

    public void setqq_IndexesBCGrid(GridField value) {
        GridField oldValue = qq_IndexesBCGrid;
        qq_IndexesBCGrid = value;
        this.qq_Listeners.firePropertyChange("qq_IndexesBCGrid", oldValue, value);
    }

    /**
     * qq_FirstBC: transformed from: qqds_PictureButton
     * TagId=65548
     * isInherited=TRUE
     */
    public JButton getqq_FirstBC() {
        if (qq_FirstBC == null) {
            super.getqq_FirstBC();
            qq_FirstBC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_FirstBC.png")));
        }
        return qq_FirstBC;
    }

    public void setqq_FirstBC(JButton value) {
        JButton oldValue = qq_FirstBC;
        qq_FirstBC = value;
        this.qq_Listeners.firePropertyChange("qq_FirstBC", oldValue, value);
    }

    /**
     * qq_PrevBC: transformed from: qqds_PictureButton
     * TagId=65549
     * isInherited=TRUE
     */
    public JButton getqq_PrevBC() {
        if (qq_PrevBC == null) {
            super.getqq_PrevBC();
            qq_PrevBC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_PrevBC.png")));
        }
        return qq_PrevBC;
    }

    public void setqq_PrevBC(JButton value) {
        JButton oldValue = qq_PrevBC;
        qq_PrevBC = value;
        this.qq_Listeners.firePropertyChange("qq_PrevBC", oldValue, value);
    }

    /**
     * qq_NextBC: transformed from: qqds_PictureButton
     * TagId=65550
     * isInherited=TRUE
     */
    public JButton getqq_NextBC() {
        if (qq_NextBC == null) {
            super.getqq_NextBC();
            qq_NextBC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_NextBC.png")));
        }
        return qq_NextBC;
    }

    public void setqq_NextBC(JButton value) {
        JButton oldValue = qq_NextBC;
        qq_NextBC = value;
        this.qq_Listeners.firePropertyChange("qq_NextBC", oldValue, value);
    }

    /**
     * qq_LastBC: transformed from: qqds_PictureButton
     * TagId=65551
     * isInherited=TRUE
     */
    public JButton getqq_LastBC() {
        if (qq_LastBC == null) {
            super.getqq_LastBC();
            qq_LastBC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_LastBC.png")));
        }
        return qq_LastBC;
    }

    public void setqq_LastBC(JButton value) {
        JButton oldValue = qq_LastBC;
        qq_LastBC = value;
        this.qq_Listeners.firePropertyChange("qq_LastBC", oldValue, value);
    }

    /**
     * qq_ScrollBCGrid: transformed from: qqds_GridField
     * TagId=131032
     * isInherited=TRUE
     * In forte this was a 5x1 grid field.
     * There are no cell margins set
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_ScrollBCGridProperties() {
        super.setqq_ScrollBCGridProperties();
        qq_ScrollBCGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_ScrollBCGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_ScrollBCGrid() {
        if (qq_ScrollBCGrid == null) {
            qq_ScrollBCGrid = CompoundFieldFactory.newGridField("ScrollBCGrid", false);
            setqq_ScrollBCGridProperties();
            qq_ScrollBCGrid.setBackground(null);
            // OPTIONAL qq_ScrollBCGrid.setSize(new Dimension(199, 31));
            // OPTIONAL qq_ScrollBCGrid.setMinimumSize(new Dimension(199, 31));
            // OPTIONAL qq_ScrollBCGrid.setPreferredSize(new Dimension(199, 31));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollBCGrid.add( getqq_FirstBC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollBCGrid.add( getqq_PrevBC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollBCGrid.add( getqq_NextBC(), qq_gbc2 );

            GridBagConstraints qq_gbc3 = new GridBagConstraints();
            qq_gbc3.gridx = 3; // Column 4
            qq_gbc3.gridy = 0; // Row 1
            qq_gbc3.weightx = 0;
            qq_gbc3.weighty = 0;
            qq_gbc3.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc3.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc3.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollBCGrid.add( getqq_LastBC(), qq_gbc3 );

            GridBagConstraints qq_gbc4 = new GridBagConstraints();
            qq_gbc4.gridx = 4; // Column 5
            qq_gbc4.gridy = 0; // Row 1
            qq_gbc4.weightx = 0;
            qq_gbc4.weighty = 0;
            qq_gbc4.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc4.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc4.insets = new Insets(0, 4, 0, 4); // Top, Left, Bottom, Right Margin
            qq_ScrollBCGrid.add( getqq_IndexesBCGrid(), qq_gbc4 );

        }
        return qq_ScrollBCGrid;
    }

    public void setqq_ScrollBCGrid(GridField value) {
        GridField oldValue = qq_ScrollBCGrid;
        qq_ScrollBCGrid = value;
        this.qq_Listeners.firePropertyChange("qq_ScrollBCGrid", oldValue, value);
    }

    /**
     * qq_ButtonGrid: transformed from: qqds_GridField
     * TagId=131035
     * isInherited=TRUE
     * In forte this was a 5x1 grid field.
     * The top and bottom cell margins are both 100 mils and the left and right cell margins are both 50 mils.
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_ButtonGridProperties() {
        super.setqq_ButtonGridProperties();
        qq_ButtonGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_ButtonGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_ButtonGrid() {
        if (qq_ButtonGrid == null) {
            qq_ButtonGrid = CompoundFieldFactory.newGridField("ButtonGrid", false);
            setqq_ButtonGridProperties();
            qq_ButtonGrid.setBackground(null);
            // OPTIONAL qq_ButtonGrid.setSize(new Dimension(424, 52));
            // OPTIONAL qq_ButtonGrid.setMinimumSize(new Dimension(424, 52));
            // OPTIONAL qq_ButtonGrid.setPreferredSize(new Dimension(424, 52));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(4, 2, 4, 2); // Top, Left, Bottom, Right Margin
            qq_ButtonGrid.add( getqq_OKBC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(4, 2, 4, 2); // Top, Left, Bottom, Right Margin
            qq_ButtonGrid.add( getqq_ClearBC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(4, 2, 4, 2); // Top, Left, Bottom, Right Margin
            qq_ButtonGrid.add( getqq_SearchBC(), qq_gbc2 );

            GridBagConstraints qq_gbc3 = new GridBagConstraints();
            qq_gbc3.gridx = 3; // Column 4
            qq_gbc3.gridy = 0; // Row 1
            qq_gbc3.weightx = 0;
            qq_gbc3.weighty = 0;
            qq_gbc3.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc3.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc3.insets = new Insets(4, 2, 4, 2); // Top, Left, Bottom, Right Margin
            qq_ButtonGrid.add( getqq_CancelBC(), qq_gbc3 );

            GridBagConstraints qq_gbc4 = new GridBagConstraints();
            qq_gbc4.gridx = 4; // Column 5
            qq_gbc4.gridy = 0; // Row 1
            qq_gbc4.weightx = 0;
            qq_gbc4.weighty = 0;
            qq_gbc4.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc4.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc4.insets = new Insets(4, 2, 4, 2); // Top, Left, Bottom, Right Margin
            qq_ButtonGrid.add( getqq_ScrollBCGrid(), qq_gbc4 );

        }
        return qq_ButtonGrid;
    }

    public void setqq_ButtonGrid(GridField value) {
        GridField oldValue = qq_ButtonGrid;
        qq_ButtonGrid = value;
        this.qq_Listeners.firePropertyChange("qq_ButtonGrid", oldValue, value);
    }

    /**
     * qq_FolderPanel: transformed from: qqds_Panel
     * TagId=130953
     * isInherited=TRUE
     */
    public Panel getqq_FolderPanel() {
        if (qq_FolderPanel == null) {
            super.getqq_FolderPanel();
            FrameWeight.set(qq_FolderPanel, Constants.W_NONE);
            Caption.set(qq_FolderPanel, "");
            // OPTIONAL UIutils.reloadLabelText(qq_FolderPanel, mcat);
        }
        return qq_FolderPanel;
    }

    public void setqq_FolderPanel(Panel value) {
        Panel oldValue = qq_FolderPanel;
        qq_FolderPanel = value;
        this.qq_Listeners.firePropertyChange("qq_FolderPanel", oldValue, value);
    }

    /**
     * qq_NestedGrid: transformed from: qqds_GridField
     * TagId=130956
     * isInherited=TRUE
     * In forte this was a 1x1 grid field.
     * The top and bottom cell margins are both 50 mils, but neither the left nor the right cell margins are set.
     * The width policy is set to Parent, and the height policy is set to Natural.
     */
    protected void setqq_NestedGridProperties() {
        super.setqq_NestedGridProperties();
        qq_NestedGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_NestedGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_NestedGrid() {
        if (qq_NestedGrid == null) {
            qq_NestedGrid = CompoundFieldFactory.newGridField("NestedGrid", false);
            setqq_NestedGridProperties();
            qq_NestedGrid.setBackground(null);
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.WEST; // Gravity - original: CG_MIDDLELEFT
            qq_gbc.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc.insets = new Insets(2, 0, 2, 0); // Top, Left, Bottom, Right Margin
            qq_NestedGrid.add( getqq_FolderPanel(), qq_gbc );

        }
        return qq_NestedGrid;
    }

    public void setqq_NestedGrid(GridField value) {
        GridField oldValue = qq_NestedGrid;
        qq_NestedGrid = value;
        this.qq_Listeners.firePropertyChange("qq_NestedGrid", oldValue, value);
    }

    /**
     * qq_ContentsGrid: transformed from: qqds_GridField
     * TagId=131069
     * isInherited=TRUE
     * In forte this was a 1x3 grid field.
     * There are no cell margins set
     * The width policy is set to Parent, and the height policy is set to Parent.
     */
    protected void setqq_ContentsGridProperties() {
        super.setqq_ContentsGridProperties();
        qq_ContentsGrid.setHeightPolicy(Constants.SP_TO_PARENT);
        qq_ContentsGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_ContentsGrid() {
        if (qq_ContentsGrid == null) {
            qq_ContentsGrid = CompoundFieldFactory.newGridField("ContentsGrid", false);
            setqq_ContentsGridProperties();
            qq_ContentsGrid.setBackground(null);
            // OPTIONAL qq_ContentsGrid.setSize(new Dimension(460, 182));
            // OPTIONAL qq_ContentsGrid.setMinimumSize(new Dimension(460, 182));
            // OPTIONAL qq_ContentsGrid.setPreferredSize(new Dimension(460, 182));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.NORTHWEST; // Gravity - original: CG_TOPLEFT
            qq_gbc.fill = GridBagConstraints.BOTH; // Size to parent - original: H & W = SP_TO_PARENT
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ContentsGrid.add( getqq_TopContentsGrid(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 0; // Column 1
            qq_gbc1.gridy = 1; // Row 2
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc1.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ContentsGrid.add( getqq_NestedGrid(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 0; // Column 1
            qq_gbc2.gridy = 2; // Row 3
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ContentsGrid.add( getqq_ButtonGrid(), qq_gbc2 );

        }
        return qq_ContentsGrid;
    }

    public void setqq_ContentsGrid(GridField value) {
        GridField oldValue = qq_ContentsGrid;
        qq_ContentsGrid = value;
        this.qq_Listeners.firePropertyChange("qq_ContentsGrid", oldValue, value);
    }

    /**
     * qq_StatusText: transformed from: qqds_DataField
     * TagId=131013
     * isInherited=TRUE
     */
    public DataField getqq_StatusText() {
        if (qq_StatusText == null) {
            // Mask type: MK_NONE
            super.getqq_StatusText();
            qq_StatusText.setOriginalFormatText(null);
            qq_StatusText.setHorizontalAlignment(JTextField.LEFT);
            getBindingManager().bindComponent(qq_StatusText, "statusText");
            // OPTIONAL qq_StatusText.setSize(new Dimension(384, 19));
            qq_StatusText.setMinimumSize(new Dimension(384, 19));
            qq_StatusText.setPreferredSize(new Dimension(384, 19));
            qq_StatusText.setFont(new Font("Default", Font.PLAIN, 12));
        }
        return qq_StatusText;
    }

    public void setqq_StatusText(DataField value) {
        DataField oldValue = qq_StatusText;
        qq_StatusText = value;
        this.qq_Listeners.firePropertyChange("qq_StatusText", oldValue, value);
    }

    /**
     * qq_ModeText: transformed from: qqds_DataField
     * TagId=131085
     * isInherited=FALSE
     */
    public DataField getqq_ModeText() {
        if (qq_ModeText == null) {
            // Mask type: MK_NONE
            qq_ModeText = DataFieldFactory.newDataField("ModeText", 11, TextData.class, DisplayProject.Constants.MK_NONE);
            qq_ModeText.setValue("");
            qq_ModeText.setOriginalFormatText(null);
            qq_ModeText.setHorizontalAlignment(JTextField.LEFT);
            getBindingManager().bindComponent(qq_ModeText, "modeText");
            WidthPolicy.set(qq_ModeText, Constants.SP_EXPLICIT);
            HeightPolicy.set(qq_ModeText, Constants.SP_NATURAL);
            // OPTIONAL qq_ModeText.setSize(new Dimension(76, 19));
            qq_ModeText.setMinimumSize(new Dimension(76, 19));
            qq_ModeText.setPreferredSize(new Dimension(76, 19));
            qq_ModeText.setFont(new Font("Default", Font.PLAIN, 12));
            ColourChange.setBackground(qq_ModeText, UIutils.Gray2);
        }
        return qq_ModeText;
    }

    public void setqq_ModeText(DataField value) {
        DataField oldValue = qq_ModeText;
        qq_ModeText = value;
        this.qq_Listeners.firePropertyChange("qq_ModeText", oldValue, value);
    }

    /**
     * qq_StatusLineGrid: transformed from: qqds_GridField
     * TagId=131014
     * isInherited=TRUE
     * In forte this was a 2x1 grid field.
     * There are no cell margins set
     * The width policy is set to Parent, and the height policy is set to Natural.
     */
    protected void setqq_StatusLineGridProperties() {
        super.setqq_StatusLineGridProperties();
        qq_StatusLineGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_StatusLineGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_StatusLineGrid() {
        if (qq_StatusLineGrid == null) {
            qq_StatusLineGrid = CompoundFieldFactory.newGridField("StatusLineGrid", false);
            setqq_StatusLineGridProperties();
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 1;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.SOUTHWEST; // Gravity - original: CG_BOTTOMLEFT
            qq_gbc.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_StatusLineGrid.add( getqq_StatusText(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_StatusLineGrid.add( getqq_ModeText(), qq_gbc1 );

        }
        return qq_StatusLineGrid;
    }

    public void setqq_StatusLineGrid(GridField value) {
        GridField oldValue = qq_StatusLineGrid;
        qq_StatusLineGrid = value;
        this.qq_Listeners.firePropertyChange("qq_StatusLineGrid", oldValue, value);
    }

    /**
     * qq_ModeTC: transformed from: qqds_PaletteList
     * TagId=131009
     * isInherited=TRUE
     */
    public PaletteList getqq_ModeTC() {
        if (qq_ModeTC == null) {
            super.getqq_ModeTC();
            qq_ModeTC.setOrientation( Constants.FO_VERTICAL );
            qq_ModeTC.setWrapSize( 2 );
            Array_Of_ListElement<ListElement> aole = new Array_Of_ListElement<ListElement>();
            aole.add(new ListElement(new ImageData(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_ModeTC_1.png"))),
                    1, "Edit Mode\nAllows you to view, insert, update, and delete records.", ListElement.qq_Resolver.cIMAGEVALUE_INTEGERVALUE_TEXTVALUE));
            aole.add(new ListElement(new ImageData(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_ModeTC_2.png"))),
                    2, "Search Mode\nAllows you to define and perform searches.", ListElement.qq_Resolver.cIMAGEVALUE_INTEGERVALUE_TEXTVALUE));
            getBindingManager().bindComponent(qq_ModeTC, "modeTC", aole);
            // HelpTopic
            CSH.setHelpIDString(qq_ModeTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_ModeTC, 509, 60100);
            // FloatOverText
            qq_ModeTC.setToolTipText("Mode");
            // StatusText
            StatusText.set(qq_ModeTC, "Allows you to change between Search Mode and Edit Mode.");
        }
        return qq_ModeTC;
    }

    public void setqq_ModeTC(PaletteList value) {
        PaletteList oldValue = qq_ModeTC;
        qq_ModeTC = value;
        this.qq_Listeners.firePropertyChange("qq_ModeTC", oldValue, value);
    }

    /**
     * qq_IndexTC: transformed from: qqds_DataField
     * TagId=131002
     * isInherited=TRUE
     */
    public DataField getqq_IndexTC() {
        if (qq_IndexTC == null) {
            // Mask type: MK_NONE
            super.getqq_IndexTC();
            qq_IndexTC.setOriginalFormatText(null);
            qq_IndexTC.setHorizontalAlignment(JTextField.RIGHT);
            getBindingManager().bindComponent(qq_IndexTC, "indexTC");
        }
        return qq_IndexTC;
    }

    public void setqq_IndexTC(DataField value) {
        DataField oldValue = qq_IndexTC;
        qq_IndexTC = value;
        this.qq_Listeners.firePropertyChange("qq_IndexTC", oldValue, value);
    }

    /**
     * qq_MaxIndexTC: transformed from: qqds_DataField
     * TagId=131000
     * isInherited=TRUE
     */
    public DataField getqq_MaxIndexTC() {
        if (qq_MaxIndexTC == null) {
            // Mask type: MK_NONE
            super.getqq_MaxIndexTC();
            qq_MaxIndexTC.setOriginalFormatText(null);
            qq_MaxIndexTC.setHorizontalAlignment(JTextField.LEFT);
            qq_MaxIndexTC.setBorder(null);
            qq_MaxIndexTC.setBackground(null);
            getBindingManager().bindComponent(qq_MaxIndexTC, "maxIndexTC");
        }
        return qq_MaxIndexTC;
    }

    public void setqq_MaxIndexTC(DataField value) {
        DataField oldValue = qq_MaxIndexTC;
        qq_MaxIndexTC = value;
        this.qq_Listeners.firePropertyChange("qq_MaxIndexTC", oldValue, value);
    }

    /**
     * qq_OfTC: transformed from: qqds_TextGraphic
     * TagId=65539
     * isInherited=TRUE
     */
    public TextGraphic getqq_OfTC() {
        if (qq_OfTC == null) {
            super.getqq_OfTC();
            UIutils.setMsgSet(qq_OfTC, 60100);
            UIutils.setMsgNumber(qq_OfTC, 606);
            // OPTIONAL UIutils.reloadLabelText(qq_OfTC, mcat);
        }
        return qq_OfTC;
    }

    public void setqq_OfTC(TextGraphic value) {
        TextGraphic oldValue = qq_OfTC;
        qq_OfTC = value;
        this.qq_Listeners.firePropertyChange("qq_OfTC", oldValue, value);
    }

    /**
     * qq_IndexesTCGrid: transformed from: qqds_GridField
     * TagId=131003
     * isInherited=TRUE
     * In forte this was a 3x1 grid field.
     * There are no cell margins set
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_IndexesTCGridProperties() {
        super.setqq_IndexesTCGridProperties();
        qq_IndexesTCGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_IndexesTCGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_IndexesTCGrid() {
        if (qq_IndexesTCGrid == null) {
            qq_IndexesTCGrid = CompoundFieldFactory.newGridField("IndexesTCGrid", false);
            setqq_IndexesTCGridProperties();
            qq_IndexesTCGrid.setBackground(null);
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_IndexesTCGrid.add( getqq_IndexTC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 4, 0, 4); // Top, Left, Bottom, Right Margin
            qq_IndexesTCGrid.add( getqq_OfTC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_IndexesTCGrid.add( getqq_MaxIndexTC(), qq_gbc2 );

        }
        return qq_IndexesTCGrid;
    }

    public void setqq_IndexesTCGrid(GridField value) {
        GridField oldValue = qq_IndexesTCGrid;
        qq_IndexesTCGrid = value;
        this.qq_Listeners.firePropertyChange("qq_IndexesTCGrid", oldValue, value);
    }

    /**
     * qq_FirstTC: transformed from: qqds_PictureButton
     * TagId=65552
     * isInherited=TRUE
     */
    public JButton getqq_FirstTC() {
        if (qq_FirstTC == null) {
            super.getqq_FirstTC();
            qq_FirstTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_FirstTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_FirstTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_FirstTC, 506, 60100);
            // FloatOverText
            qq_FirstTC.setToolTipText("First Record");
            // StatusText
            StatusText.set(qq_FirstTC, "Scrolls to the First Record in the result set.");
        }
        return qq_FirstTC;
    }

    public void setqq_FirstTC(JButton value) {
        JButton oldValue = qq_FirstTC;
        qq_FirstTC = value;
        this.qq_Listeners.firePropertyChange("qq_FirstTC", oldValue, value);
    }

    /**
     * qq_PrevTC: transformed from: qqds_PictureButton
     * TagId=65553
     * isInherited=TRUE
     */
    public JButton getqq_PrevTC() {
        if (qq_PrevTC == null) {
            super.getqq_PrevTC();
            qq_PrevTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_PrevTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_PrevTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_PrevTC, 514, 60100);
            // FloatOverText
            qq_PrevTC.setToolTipText("Previous Record");
            // StatusText
            StatusText.set(qq_PrevTC, "Scrolls to the Previous Record  in the result set.");
        }
        return qq_PrevTC;
    }

    public void setqq_PrevTC(JButton value) {
        JButton oldValue = qq_PrevTC;
        qq_PrevTC = value;
        this.qq_Listeners.firePropertyChange("qq_PrevTC", oldValue, value);
    }

    /**
     * qq_NextTC: transformed from: qqds_PictureButton
     * TagId=65554
     * isInherited=TRUE
     */
    public JButton getqq_NextTC() {
        if (qq_NextTC == null) {
            super.getqq_NextTC();
            qq_NextTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_NextTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_NextTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_NextTC, 512, 60100);
            // FloatOverText
            qq_NextTC.setToolTipText("Next Record");
            // StatusText
            StatusText.set(qq_NextTC, "Scrolls to the Next Record in the result set.");
        }
        return qq_NextTC;
    }

    public void setqq_NextTC(JButton value) {
        JButton oldValue = qq_NextTC;
        qq_NextTC = value;
        this.qq_Listeners.firePropertyChange("qq_NextTC", oldValue, value);
    }

    /**
     * qq_LastTC: transformed from: qqds_PictureButton
     * TagId=65555
     * isInherited=TRUE
     */
    public JButton getqq_LastTC() {
        if (qq_LastTC == null) {
            super.getqq_LastTC();
            qq_LastTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_LastTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_LastTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_LastTC, 508, 60100);
            // FloatOverText
            qq_LastTC.setToolTipText("Last Record");
            // StatusText
            StatusText.set(qq_LastTC, "Scrolls to the Last Record in the result set.");
        }
        return qq_LastTC;
    }

    public void setqq_LastTC(JButton value) {
        JButton oldValue = qq_LastTC;
        qq_LastTC = value;
        this.qq_Listeners.firePropertyChange("qq_LastTC", oldValue, value);
    }

    /**
     * qq_ScrollTCGrid: transformed from: qqds_GridField
     * TagId=131008
     * isInherited=TRUE
     * In forte this was a 5x1 grid field.
     * There are no cell margins set
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_ScrollTCGridProperties() {
        super.setqq_ScrollTCGridProperties();
        qq_ScrollTCGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_ScrollTCGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_ScrollTCGrid() {
        if (qq_ScrollTCGrid == null) {
            qq_ScrollTCGrid = CompoundFieldFactory.newGridField("ScrollTCGrid", false);
            setqq_ScrollTCGridProperties();
            qq_ScrollTCGrid.setBackground(null);
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollTCGrid.add( getqq_FirstTC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollTCGrid.add( getqq_PrevTC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollTCGrid.add( getqq_NextTC(), qq_gbc2 );

            GridBagConstraints qq_gbc3 = new GridBagConstraints();
            qq_gbc3.gridx = 3; // Column 4
            qq_gbc3.gridy = 0; // Row 1
            qq_gbc3.weightx = 0;
            qq_gbc3.weighty = 0;
            qq_gbc3.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc3.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc3.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollTCGrid.add( getqq_LastTC(), qq_gbc3 );

            GridBagConstraints qq_gbc4 = new GridBagConstraints();
            qq_gbc4.gridx = 4; // Column 5
            qq_gbc4.gridy = 0; // Row 1
            qq_gbc4.weightx = 0;
            qq_gbc4.weighty = 0;
            qq_gbc4.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc4.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc4.insets = new Insets(0, 4, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ScrollTCGrid.add( getqq_IndexesTCGrid(), qq_gbc4 );

        }
        return qq_ScrollTCGrid;
    }

    public void setqq_ScrollTCGrid(GridField value) {
        GridField oldValue = qq_ScrollTCGrid;
        qq_ScrollTCGrid = value;
        this.qq_Listeners.firePropertyChange("qq_ScrollTCGrid", oldValue, value);
    }

    /**
     * qq_SaveTC: transformed from: qqds_PictureButton
     * TagId=130998
     * isInherited=TRUE
     */
    public JButton getqq_SaveTC() {
        if (qq_SaveTC == null) {
            super.getqq_SaveTC();
            qq_SaveTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_SaveTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_SaveTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_SaveTC, 515, 60100);
            // FloatOverText
            qq_SaveTC.setToolTipText("Save");
            // StatusText
            StatusText.set(qq_SaveTC, "Saves all changes to result set in the database.");
        }
        return qq_SaveTC;
    }

    public void setqq_SaveTC(JButton value) {
        JButton oldValue = qq_SaveTC;
        qq_SaveTC = value;
        this.qq_Listeners.firePropertyChange("qq_SaveTC", oldValue, value);
    }

    /**
     * qq_DeleteTC: transformed from: qqds_PictureButton
     * TagId=130995
     * isInherited=TRUE
     */
    public JButton getqq_DeleteTC() {
        if (qq_DeleteTC == null) {
            super.getqq_DeleteTC();
            qq_DeleteTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_DeleteTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_DeleteTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_DeleteTC, 504, 60100);
            // FloatOverText
            qq_DeleteTC.setToolTipText("Delete Record from Result Set");
            // StatusText
            StatusText.set(qq_DeleteTC, "Removes the selected record from the result set.");
        }
        return qq_DeleteTC;
    }

    public void setqq_DeleteTC(JButton value) {
        JButton oldValue = qq_DeleteTC;
        qq_DeleteTC = value;
        this.qq_Listeners.firePropertyChange("qq_DeleteTC", oldValue, value);
    }

    /**
     * qq_InsertTC: transformed from: qqds_PictureButton
     * TagId=130996
     * isInherited=TRUE
     */
    public JButton getqq_InsertTC() {
        if (qq_InsertTC == null) {
            super.getqq_InsertTC();
            qq_InsertTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_InsertTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_InsertTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_InsertTC, 507, 60100);
            // FloatOverText
            qq_InsertTC.setToolTipText("Insert Record into Result Set");
            // StatusText
            StatusText.set(qq_InsertTC, "Inserts a new, empty record into the result set.");
        }
        return qq_InsertTC;
    }

    public void setqq_InsertTC(JButton value) {
        JButton oldValue = qq_InsertTC;
        qq_InsertTC = value;
        this.qq_Listeners.firePropertyChange("qq_InsertTC", oldValue, value);
    }

    /**
     * qq_EditTCGrid: transformed from: qqds_GridField
     * TagId=130999
     * isInherited=TRUE
     * In forte this was a 3x1 grid field.
     * There are no cell margins set
     * The width policy is set to Natural, and the height policy is set to Natural.
     */
    protected void setqq_EditTCGridProperties() {
        super.setqq_EditTCGridProperties();
        qq_EditTCGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_EditTCGrid.setWidthPolicy(Constants.SP_NATURAL);
    }

    public GridField getqq_EditTCGrid() {
        if (qq_EditTCGrid == null) {
            qq_EditTCGrid = CompoundFieldFactory.newGridField("EditTCGrid", false);
            setqq_EditTCGridProperties();
            qq_EditTCGrid.setBackground(null);
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(0, 0, 0, 6); // Top, Left, Bottom, Right Margin
            qq_EditTCGrid.add( getqq_SaveTC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_EditTCGrid.add( getqq_InsertTC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_EditTCGrid.add( getqq_DeleteTC(), qq_gbc2 );

        }
        return qq_EditTCGrid;
    }

    public void setqq_EditTCGrid(GridField value) {
        GridField oldValue = qq_EditTCGrid;
        qq_EditTCGrid = value;
        this.qq_Listeners.firePropertyChange("qq_EditTCGrid", oldValue, value);
    }

    /**
     * qq_ClearTC: transformed from: qqds_PictureButton
     * TagId=130997
     * isInherited=TRUE
     */
    public JButton getqq_ClearTC() {
        if (qq_ClearTC == null) {
            super.getqq_ClearTC();
            qq_ClearTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_ClearTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_ClearTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_ClearTC, 501, 60100);
            // FloatOverText
            qq_ClearTC.setToolTipText("Clear Result Set");
            // StatusText
            StatusText.set(qq_ClearTC, "Aborts any changes and creates an empty result set.");
        }
        return qq_ClearTC;
    }

    public void setqq_ClearTC(JButton value) {
        JButton oldValue = qq_ClearTC;
        qq_ClearTC = value;
        this.qq_Listeners.firePropertyChange("qq_ClearTC", oldValue, value);
    }

    /**
     * qq_SearchTC: transformed from: qqds_PictureButton
     * TagId=131010
     * isInherited=TRUE
     */
    public JButton getqq_SearchTC() {
        if (qq_SearchTC == null) {
            super.getqq_SearchTC();
            qq_SearchTC.setIcon(new ImageIcon(ExpressClassWindow.class.getResource("ExpressClassWindow.qq_SearchTC.png")));
            // HelpTopic
            CSH.setHelpIDString(qq_SearchTC, "");
            // Help Msg catalog
            UIutils.setFloatOverMsgAndSetNumber(qq_SearchTC, 516, 60100);
            // FloatOverText
            qq_SearchTC.setToolTipText("Search");
            // StatusText
            StatusText.set(qq_SearchTC, "Allows you to define and perform searches.");
        }
        return qq_SearchTC;
    }

    public void setqq_SearchTC(JButton value) {
        JButton oldValue = qq_SearchTC;
        qq_SearchTC = value;
        this.qq_Listeners.firePropertyChange("qq_SearchTC", oldValue, value);
    }

    /**
     * qq_ToolBarBackgroundGrid: transformed from: qqds_GridField
     * TagId=131011
     * isInherited=TRUE
     * In forte this was a 5x1 grid field.
     * The top and bottom cell margins are both 30 mils, but neither the left nor the right cell margins are set.
     * The width policy is set to Parent, and the height policy is set to Natural.
     */
    protected void setqq_ToolBarBackgroundGridProperties() {
        super.setqq_ToolBarBackgroundGridProperties();
        qq_ToolBarBackgroundGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_ToolBarBackgroundGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_ToolBarBackgroundGrid() {
        if (qq_ToolBarBackgroundGrid == null) {
            qq_ToolBarBackgroundGrid = CompoundFieldFactory.newGridField("ToolBarBackgroundGrid", false);
            setqq_ToolBarBackgroundGridProperties();
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc.insets = new Insets(1, 2, 1, 4); // Top, Left, Bottom, Right Margin
            qq_ToolBarBackgroundGrid.add( getqq_ModeTC(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 1; // Column 2
            qq_gbc1.gridy = 0; // Row 1
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc1.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc1.insets = new Insets(1, 2, 1, 6); // Top, Left, Bottom, Right Margin
            qq_ToolBarBackgroundGrid.add( getqq_ClearTC(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 2; // Column 3
            qq_gbc2.gridy = 0; // Row 1
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc2.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc2.insets = new Insets(1, 2, 1, 6); // Top, Left, Bottom, Right Margin
            qq_ToolBarBackgroundGrid.add( getqq_SearchTC(), qq_gbc2 );

            GridBagConstraints qq_gbc3 = new GridBagConstraints();
            qq_gbc3.gridx = 3; // Column 4
            qq_gbc3.gridy = 0; // Row 1
            qq_gbc3.weightx = 0;
            qq_gbc3.weighty = 0;
            qq_gbc3.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER
            qq_gbc3.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc3.insets = new Insets(1, 2, 1, 6); // Top, Left, Bottom, Right Margin
            qq_ToolBarBackgroundGrid.add( getqq_EditTCGrid(), qq_gbc3 );

            GridBagConstraints qq_gbc4 = new GridBagConstraints();
            qq_gbc4.gridx = 4; // Column 5
            qq_gbc4.gridy = 0; // Row 1
            qq_gbc4.weightx = 0;
            qq_gbc4.weighty = 0;
            qq_gbc4.anchor = GridBagConstraints.EAST; // Gravity - original: CG_MIDDLERIGHT
            qq_gbc4.fill = GridBagConstraints.NONE; // Size to parent - original: No size to parent
            qq_gbc4.insets = new Insets(1, 2, 1, 9); // Top, Left, Bottom, Right Margin
            qq_ToolBarBackgroundGrid.add( getqq_ScrollTCGrid(), qq_gbc4 );

        }
        return qq_ToolBarBackgroundGrid;
    }

    public void setqq_ToolBarBackgroundGrid(GridField value) {
        GridField oldValue = qq_ToolBarBackgroundGrid;
        qq_ToolBarBackgroundGrid = value;
        this.qq_Listeners.firePropertyChange("qq_ToolBarBackgroundGrid", oldValue, value);
    }

    /**
     * qq_ToolBarGrid: transformed from: qqds_GridField
     * TagId=131012
     * isInherited=TRUE
     * In forte this was a 1x1 grid field.
     * There are no cell margins set
     * The width policy is set to Parent, and the height policy is set to Natural.
     */
    protected void setqq_ToolBarGridProperties() {
        super.setqq_ToolBarGridProperties();
        qq_ToolBarGrid.setHeightPolicy(Constants.SP_NATURAL);
        qq_ToolBarGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_ToolBarGrid() {
        if (qq_ToolBarGrid == null) {
            qq_ToolBarGrid = CompoundFieldFactory.newGridField("ToolBarGrid", false);
            setqq_ToolBarGridProperties();
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.NORTHWEST; // Gravity - original: CG_TOPLEFT
            qq_gbc.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_ToolBarGrid.add( getqq_ToolBarBackgroundGrid(), qq_gbc );

        }
        return qq_ToolBarGrid;
    }

    public void setqq_ToolBarGrid(GridField value) {
        GridField oldValue = qq_ToolBarGrid;
        qq_ToolBarGrid = value;
        this.qq_Listeners.firePropertyChange("qq_ToolBarGrid", oldValue, value);
    }

    /**
     * qq_TopGrid: transformed from: qqds_GridField
     * TagId=131070
     * isInherited=TRUE
     * In forte this was a 1x3 grid field.
     * There are no cell margins set
     * The width policy is set to Parent, and the height policy is set to Parent.
     */
    protected void setqq_TopGridProperties() {
        super.setqq_TopGridProperties();
        qq_TopGrid.setHeightPolicy(Constants.SP_TO_PARENT);
        qq_TopGrid.setWidthPolicy(Constants.SP_TO_PARENT);
    }

    public GridField getqq_TopGrid() {
        if (qq_TopGrid == null) {
            qq_TopGrid = CompoundFieldFactory.newGridField("TopGrid", false);
            setqq_TopGridProperties();
            qq_TopGrid.setBackground(null);
            // OPTIONAL qq_TopGrid.setSize(new Dimension(460, 244));
            // OPTIONAL qq_TopGrid.setMinimumSize(new Dimension(460, 244));
            // OPTIONAL qq_TopGrid.setPreferredSize(new Dimension(460, 244));
            GridBagConstraints qq_gbc = new GridBagConstraints();
            qq_gbc.gridx = 0; // Column 1
            qq_gbc.gridy = 0; // Row 1
            qq_gbc.weightx = 0;
            qq_gbc.weighty = 0;
            qq_gbc.anchor = GridBagConstraints.CENTER; // Gravity - original: CG_CENTER gf
            qq_gbc.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_TopGrid.add( getqq_ToolBarGrid(), qq_gbc );

            GridBagConstraints qq_gbc1 = new GridBagConstraints();
            qq_gbc1.gridx = 0; // Column 1
            qq_gbc1.gridy = 1; // Row 2
            qq_gbc1.weightx = 0;
            qq_gbc1.weighty = 0;
            qq_gbc1.anchor = GridBagConstraints.NORTHWEST; // Gravity - original: CG_TOPLEFT
            qq_gbc1.fill = GridBagConstraints.BOTH; // Size to parent - original: H & W = SP_TO_PARENT
            qq_gbc1.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_TopGrid.add( getqq_ContentsGrid(), qq_gbc1 );

            GridBagConstraints qq_gbc2 = new GridBagConstraints();
            qq_gbc2.gridx = 0; // Column 1
            qq_gbc2.gridy = 2; // Row 3
            qq_gbc2.weightx = 0;
            qq_gbc2.weighty = 0;
            qq_gbc2.anchor = GridBagConstraints.SOUTHWEST; // Gravity - original: CG_BOTTOMLEFT
            qq_gbc2.fill = GridBagConstraints.HORIZONTAL; // Size to parent - original: W = SP_TO_PARENT
            qq_gbc2.insets = new Insets(0, 0, 0, 0); // Top, Left, Bottom, Right Margin
            qq_TopGrid.add( getqq_StatusLineGrid(), qq_gbc2 );

        }
        return qq_TopGrid;
    }

    public void setqq_TopGrid(GridField value) {
        GridField oldValue = qq_TopGrid;
        qq_TopGrid = value;
        this.qq_Listeners.firePropertyChange("qq_TopGrid", oldValue, value);
    }

    /**
     * Form: transformed from: qqds_Panel
     * TagId=1
     * isInherited=FALSE
     */
    public JPanel getForm() {
        if (Form == null) {
            super.getForm();
            Form.setLayout(new WindowFormLayout(this));
            Form.setOpaque( true );
        }
        return Form;
    }

    public void setForm(JPanel value) {
        JPanel oldValue = Form;
        Form = value;
        this.qq_Listeners.firePropertyChange("Form", oldValue, value);
    }

    /**
     * Gets the default message set number for the window and its widgets.
     */
    public int getSetNum() {
        return this.qq_defaultSet;
    }

    /**
     * Sets the default message set number for the window and its widgets.
     */
    public void setSetNum(int value) {
        this.qq_defaultSet = value;
    }

    /**
     * Gets the message set number for the message number of the window's title.
     */
    public int getTitleSetNum() {
        return this.qq_msgSet;
    }

    /**
     * Sets the message set number for the message number of the window's title.
     */
    public void setTitleSetNum(int value) {
        this.qq_msgSet = value;
    }

    /**
     * Gets the message number for the message number of the window's title.
     */
    public int getTitleMsgNum() {
        return this.qq_msgNumber;
    }

    /**
     * Sets the message number for the message number of the window's title.
     */
    public void setTitleMsgNum(int value) {
        this.qq_msgNumber = value;
    }



    /**
     * Initialise the window and all its children.
     */
    private void initialize() {
        this.qq_setupWindowUsage();
        this.setName( "ExpressClassWindow" );
        this.setTitle( "Part Window" );
        this.setSystemClosePolicy(Constants.SC_ENABLEDSHUTDOWN);
        this.setJMenuBar( getqq_MenuBar() );
        if (this.getContentPane() != this.getForm()) {
            this.setContentPane(getForm());
        }
        this.setResizable( true );
        this.setAlwaysOnTop(false);
        UserWindow.setIconizeEnabled(this, true);
        UserWindow.setMaximizeEnabled(this, true);
        WindowManager.addWindowListener(this);
        this.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        this.setUsage(DisplayProject.Constants.WU_UPDATE);
        UIutils.processGUIActions();
        this.pack();
        this.setInitialX(0);
        this.setInitialY(0);
        this.setInitialPositionPolicy(Constants.PP_SYSTEMDEFAULT);
    }


    // ----------------
    //  Window usage
    //-----------------
    public void qq_setupWindowUsage() {
        this.usage.add(getqq_PreferencesMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_PreferencesSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_RevertMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_RevertSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_PrintMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_PrintSetupMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_PrintSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_SaveMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_SaveSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_CancelMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_CancelSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_CloseMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_CloseSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ExitAllMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_fileMenu(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_EditCutMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_EditCopyMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_EditPasteMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_EditDeleteMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_EditSelectallMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_editMenu(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ModeMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ModeSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ClearMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ClearSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_InsertMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_DeleteMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ScrollToSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_FirstMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_LastMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ScrollSP(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_PrevMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_NextMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_ScrollMenu(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_SearchMC(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_resultSetMenu(), Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED, Constants.MS_ENABLED);
        this.usage.add(getqq_TopGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ContentsGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_TopContentsGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_DataGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_DummyGraphic(), Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_SideBCGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_InsertBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_DeleteBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_ButtonGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ClearBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_CancelBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_SearchBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_OKBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_ScrollBCGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_IndexesBCGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_DISABLED, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_IndexBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_MaxIndexBC(), Constants.FS_INACTIVE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_OfBC(), Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_FirstBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_PrevBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_NextBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_LastBC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_NestedGrid(), Constants.FS_INVISIBLE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_FolderPanel(), Constants.FS_INVISIBLE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_StatusLineGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_StatusText(), Constants.FS_INACTIVE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ModeText(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ToolBarGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ToolBarBackgroundGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ModeTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_ScrollTCGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_IndexesTCGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_IndexTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_DISABLED, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_MaxIndexTC(), Constants.FS_INACTIVE, Constants.FS_VIEWONLY, Constants.FS_DISABLED, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_OfTC(), Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_DISABLED, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_FirstTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_PrevTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_NextTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_LastTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_QUERY, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_EditTCGrid(), Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_QUERY, Constants.FS_UPDATE, Constants.FS_UPDATE, Constants.FS_UPDATE);
        this.usage.add(getqq_SaveTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_DeleteTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_InsertTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_ClearTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
        this.usage.add(getqq_SearchTC(), Constants.FS_UPDATE, Constants.FS_VIEWONLY, Constants.FS_UPDATE, Constants.FS_INACTIVE, Constants.FS_INACTIVE, Constants.FS_INACTIVE);
    }
    // </editor-fold>

    // -----------
    // Main method
    // -----------
    public static void main(String []args) {
        KeyboardFocusManager.setCurrentKeyboardFocusManager(new ForteKeyboardFocusManager());
        try {
            UIManager.setLookAndFeel(new Win32LookAndFeel());
        }
        catch (Exception e) {}
        ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE);
        ExpressClassWindow myClass = new ExpressClassWindow();
        myClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myClass.setVisible(true);
        UIutils.processGUIActions();
    }
// end class ExpressClassWindow
// c Pass 2 Conversion Time: 13265 milliseconds
TOP

Related Classes of Express.windows.ExpressClassWindow$AsyncRunner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.