/* 
______________________________________________________________________
*
* Copyright (c) 1996-2004 QUEST SOFTWARE INC.  All Rights Reserved.
* http://java.quest.com
*
* This software is the confidential and proprietary information of
* Quest Software Inc. ("Confidential Information").  You shall not disclose
* such Confidential Information and shall use it only in accordance with the
* terms of the license agreement you entered into with Quest Software.
*
* QUEST SOFTWARE MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY
* OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGEMENT. QUEST SOFTWARE SHALL NOT BE LIABLE FOR ANY
* DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
* ______________________________________________________________________
*/

// RCSID -- $RCSfile: JCFieldCellRegister.java,v $ $Revision: 1.2 $ $Date: 2006-03-17 21:13:15 $ $Locker:  $  Quest Software Inc.
 
package com.klg.jclass.field.cell;

import com.klg.jclass.cell.EditorRendererRegistry;

/**
 * This class contains static methods to register JClass Field editors
 * and renderers to the central <code>CellRegistry</code>. It also provides a method to
 * override the default cell editors and renderers with JClass Field
 * equivalents.
 *
 * @see com.klg.jclass.cell.EditorRendererRegistry
 */
public class JCFieldCellRegister {

/** Modifier type to use when a <code>JCSpinField</code> is needed. */
public final static String SPIN_FIELD = "spin";

/** Modifier type to use when a <code>JCComboField</code> is needed. */
public final static String COMBO_FIELD = "combo";

/** Modifier type to use when a <code>JCTextField</code> is needed. */
public final static String TEXT_FIELD = "text";

/** Modifier type to use when a <code>JCPopupField</code> is needed. */
public final static String POPUP_FIELD = "popup";

/** Modifier type to use when a <code>JCLabelField</code> is needed. */
public final static String LABEL_FIELD = "label";


/**
 * Registers the Field renderers.  If this method is called, JClass Field will
 * register its renderers to the central cell registry for 
 * data types that it can handle.  For the renderer, a 
 * <code>JCLabelFieldCellRenderer</code> will be used. This method will NOT override
 * the default editor/renderers.
 *
 * @see com.klg.jclass.cell.EditorRendererRegistry
 */
public static void registerFieldRenderers() {
	EditorRendererRegistry registry = 
		EditorRendererRegistry.getCentralRegistry();

    registry.addClass("java.math.BigDecimal",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

	registry.addClass("java.math.BigDecimal",
       		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Byte",
             TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Byte",
             SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Double",
       		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Double",
       		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Float",
     		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Float",
     		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");


    registry.addClass("java.lang.Integer",
             TEXT_FIELD,
             "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Integer",
             SPIN_FIELD,
             "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Long",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Long",
       		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.String",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Short",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.lang.Short",
       		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");


    registry.addClass("java.sql.Time",
      		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Time",
      		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Time",
      		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 POPUP_FIELD,
       		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCLabelFieldCellRenderer");

}

/**
 * Registers the Field editors.  If this method is called, field will
 * register its editors to the central cell registry for 
 * data types that it can handle.  This method will NOT override
 * the default editor/renderers.
 *
 * @see com.klg.jclass.cell.EditorRendererRegistry
 */
public static void registerFieldEditors() {
	EditorRendererRegistry registry = 
		EditorRendererRegistry.getCentralRegistry();

    registry.addClass("java.math.BigDecimal",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

	registry.addClass("java.math.BigDecimal",
       		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.lang.Byte",
             TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Byte",
             SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.lang.Double",
       		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Double",
       		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.lang.Float",
     		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Float",
     		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");


    registry.addClass("java.lang.Integer",
             TEXT_FIELD,
             "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Integer",
             SPIN_FIELD,
             "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.lang.Long",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Long",
       		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.lang.String",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Short",
       		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Short",
       		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");


    registry.addClass("java.sql.Time",
      		 TEXT_FIELD,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.sql.Time",
      		 SPIN_FIELD,
      		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.sql.Time",
      		 POPUP_FIELD,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 TEXT_FIELD,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 SPIN_FIELD,
       		 "com.klg.jclass.field.cell.JCSpinFieldCellEditor",
             "com.klg.jclass.field.cell.JCSpinFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 POPUP_FIELD,
       		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

}

/** 
 * This method will register the Field cell editors and renderers in the
 * central registry and use them as defaults for the data types it can
 * handle.
 */
public static void useFieldCellAsDefault() {
	EditorRendererRegistry registry = 
		EditorRendererRegistry.getCentralRegistry();

    registry.addClass("java.math.BigDecimal",
       		 null,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Byte",
             null,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.util.Calendar",
       		 null,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.util.Date",
       		 null,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.lang.Double",
       		 null,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Float",
     		 null,
      		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Integer",
             null,
             "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Long",
       		 null,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.String",
       		 null,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.lang.Short",
       		 null,
       		 "com.klg.jclass.field.cell.JCTextFieldCellEditor",
             "com.klg.jclass.field.cell.JCTextFieldCellRenderer");

    registry.addClass("java.sql.Date",
      		 null,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.sql.Time",
      		 null,
      		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");

    registry.addClass("java.sql.Timestamp",
     		 null,
       		 "com.klg.jclass.field.cell.JCPopupFieldCellEditor",
             "com.klg.jclass.field.cell.JCPopupFieldCellRenderer");
}

}




