Package Express.windows

Source Code of Express.windows.ExpressClassWindow

/*
Copyright (c) 2003-2009 ITerative Consulting Pty Ltd. All Rights Reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:

o Redistributions of source code must retain the above copyright notice, this list of conditions and
the following disclaimer.
 
o Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the distribution.
   
o This jcTOOL Helper Class software, whether in binary or source form may not be used within,
or to derive, any other product without the specific prior written permission of the copyright holder

 
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


*/
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

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.