/*
 * WepsTableEnum.java
 *
 * Created on June 19, 2006, 11:22 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package usda.weru.util.table;

import com.klg.jclass.table.JCTableEnum;

/**
 * A collection of constants used by WepsTable.  Constants begining with "XML_" are tags or attributes found within the XML configuration files used to specify the look and feel of the table.  Other constants are possible configuration values for the table.
 * @author Joseph Levin
 */
public class WepsTableEnum {

	/**
	 *
	 */
	public static final int NOT_FOUND = -666;

	/**
	 *
	 */
	public static final int NO_VALUE = JCTableEnum.NOVALUE;

	/**
	 *
	 */
	public static final String DEFAULT_ID = "DEFAULT_ID";

	/**
	 *
	 */
	public static final String NO_UNITS_SYSTEM = "NO_UNITS_SYSTEM";
    
    //Attributes available to XML tags

	/**
	 *
	 */
	    public static final String XML_id = "id";

	/**
	 *
	 */
	public static final String XML_parent = "parent";
    
    //Meta

	/**
	 *
	 */
	    public static final String XML_table = "table";

	/**
	 *
	 */
	public static final String XML_cellstyles = "cellstyles";

	/**
	 *
	 */
	public static final String XML_columnstyles = "columnstyles";

	/**
	 *
	 */
	public static final String XML_columns = "columns";

	/**
	 *
	 */
	public static final String XML_columngroup = "columngroup";

	/**
	 *
	 */
	public static final String XML_defaultcellstyle = "defaultcellstyle";

	/**
	 *
	 */
	public static final String XML_defaultlabelstyle = "defaultlabelstyle";

	/**
	 *
	 */
	public static final String XML_rowlabeldisplay = "rowlabeldisplay";

	/**
	 *
	 */
	public static final String XML_columnlabeldisplay = "columnlabeldisplay";

	/**
	 *
	 */
	public static final String XML_frozenrows = "frozenrows";

	/**
	 *
	 */
	public static final String XML_frozencolumns = "frozencolumns";
    
    //Cellstyles

	/**
	 *
	 */
	    public static final String XML_style = "style";

	/**
	 *
	 */
	public static final String XML_background = "background";

	/**
	 *
	 */
	public static final String XML_border = "border";

	/**
	 *
	 */
	public static final String XML_left = "left";

	/**
	 *
	 */
	public static final String XML_right = "right";

	/**
	 *
	 */
	public static final String XML_top = "top";

	/**
	 *
	 */
	public static final String XML_bottom = "bottom";

	/**
	 *
	 */
	public static final String XML_all = "all";

	/**
	 *
	 */
	public static final String XML_none = "none";

	/**
	 *
	 */
	public static final String XML_color = "color";

	/**
	 *
	 */
	public static final String XML_cliphints = "cliphints";    
    
    //TODO: Fix editable, not applying.

	/**
	 *
	 */
	    public static final String XML_editable = "editable";

	/**
	 *
	 */
	public static final String XML_editor = "editor";

	/**
	 *
	 */
	public static final String XML_foreground = "foreground";

	/**
	 *
	 */
	public static final String XML_font = "font";

	/**
	 *
	 */
	public static final String XML_horizontalalignment = "horizontalalignment";

	/**
	 *
	 */
	public static final String XML_renderer = "renderer";

	/**
	 *
	 */
	public static final String XML_repeatbackground = "repeatbackground";

	/**
	 *
	 */
	public static final String XML_repeatforeground = "repeatforeground";

	/**
	 *
	 */
	public static final String XML_traversable= "traversable";

	/**
	 *
	 */
	public static final String XML_verticalalignment = "verticalalignment";

	/**
	 *
	 */
	public static final String XML_conditional = "conditional";

	/**
	 *
	 */
	public static final String XML_expression = "expression";

	/**
	 *
	 */
	public static final String XML_size = "size";

	/**
	 *
	 */
	public static final String XML_bold = "bold";

	/**
	 *
	 */
	public static final String XML_italic = "italic";

    
    //column

	/**
	 *
	 */
	    public static final String XML_column = "column";

	/**
	 *
	 */
	public static final String XML_name = "name";

	/**
	 *
	 */
	public static final String XML_data = "data";

	/**
	 *
	 */
	public static final String XML_type = "type";

	/**
	 *
	 */
	public static final String XML_units = "units";

	/**
	 *
	 */
	public static final String XML_displayunits = "displayunits";

	/**
	 *
	 */
	public static final String XML_system = "system";

	/**
	 *
	 */
	public static final String XML_format = "format";

	/**
	 *
	 */
	public static final String XML_visible = "visible";

	/**
	 *
	 */
	public static final String XML_hidden = "hidden";
    
    //Sizes

	/**
	 *
	 */
	    public static final String XML_width = "width";

	/**
	 *
	 */
	public static final String XML_height = "height";

	/**
	 *
	 */
	public static final String XML_min = "min";

	/**
	 *
	 */
	public static final String XML_max = "max";
    
    //Adjustment

	/**
	 *
	 */
	    public static final String XML_adjust = "adjust";

	/**
	 *
	 */
	public static final String XML_operation = "operation";    
    
    //Limit

	/**
	 *
	 */
	    public static final String XML_limit = "limit";

	/**
	 *
	 */
	public static final String XML_lower = "lower";

	/**
	 *
	 */
	public static final String XML_upper = "upper";

	/**
	 *
	 */
	public static final String XML_allowzero = "allowzero";

	/**
	 *
	 */
	public static final String XML_inclusive = "inclusive";
    
    //Filter

	/**
	 *
	 */
	    public static final String XML_filterset = "filterset";

	/**
	 *
	 */
	public static final String XML_rowfilter = "rowfilter";

	/**
	 *
	 */
	public static final String XML_columnfilter = "columnfilter";

	/**
	 *
	 */
	public static final String XML_class = "class";
    
    //label

	/**
	 *
	 */
	    public static final String XML_label = "label";
            
            public static final String XML_bolder = "bolder";

	/**
	 *
	 */
	public static final String XML_text = "text";

	/**
	 *
	 */
	public static final String XML_spanrows = "spanrows";

	/**
	 *
	 */
	public static final String XML_spancolumns = "spancolumns";

	/**
	 *
	 */
	public static final String XML_image = "image";

	/**
	 *
	 */
	public static final String XML_angle = "angle";
        
        /**
	 *
	 */ 
        public static final String XML_qplotname = "qplotname";
        
        /*
        *
        */
        public static final String XML_plottype = "plottype";
        
        /**
        *
        */
        public static final String XML_qplotcol = "qplotcol";
    
    //quickplot

        /**
         * 
         */
        public static final String XML_quickplot = "quickplot";
        
	/**
	 *
	 */
	    public static final String XML_quickplotL = "quickplotL";
            
        /**
         * 
         */
            public static final String XML_quickplotR = "quickplotR";
            
        /**
         * 
         */
        public static final String XML_percent = "percent";
        
        /**
        * 
        */
        public static final String XML_alternateEnglishUnits = "alt_EN_units";
        
        /**
        * 
        */
        public static final String XML_alternateSIUnits = "alt_SI_units";
            
    //Parsing fields

	/**
	 *
	 */
	    public static final String PARSE_value = "value";

	/**
	 *
	 */
	public static final String PARSE_units = "units";

	/**
	 *
	 */
	public static final String PARSE_displayunits = "displayunits";

	/**
	 *
	 */
	public static final String PARSE_displayunitsabbreviation = "displayunitsabbreviation";
    
    //Data Types

	/**
	 *
	 */
	    public static final int DATA_text = 1;

	/**
	 *
	 */
	public static final int DATA_date = 2;

	/**
	 *
	 */
	public static final int DATA_numeric = 4;

	/**
	 *
	 */
	public static final int DATA_boolean = 8;

	/**
	 *
	 */
	public static final int DATA_list = 16;

	/**
	 *
	 */
	public static final int DATA_image = 32;
    
    //Adjustments

	/**
	 *
	 */
	    public static final int OPERATION_add = 1;

	/**
	 *
	 */
	public static final int OPERATION_subtract = 2;

	/**
	 *
	 */
	public static final int OPERATION_multiply = 4;

	/**
	 *
	 */
	public static final int OPERATION_divide = 8;

	/**
	 *
	 */
	public static final int OPERATION_abs = 16;
    
    //Prepare Flags

	/**
	 *
	 */
	    public static final int PREPARE_adjustments = 1; 

	/**
	 *
	 */
	public static final int PREPARE_displayunits = 2;

	/**
	 *
	 */
	public static final int PREPARE_limits = 4;

	/**
	 *
	 */
	public static final int PREPARE_formats = 8;

	/**
	 *
	 */
	public static final int PREPARE_all = PREPARE_adjustments | PREPARE_displayunits | PREPARE_limits | PREPARE_formats; 
    

    /**
     * Return the value of the constant specified.
     * @param constant The name of the constant.
     * @return The value of the constant.
     */
    public static int getEnumFromTag(String constant){
        return getEnumFromTag(constant, NOT_FOUND);            
    }
    
    /**
     * Return the value of the constant specified or the default value specified if the constant can't be found.
     * @param constant The name of the constant.
     * @param defaultValue The value to be returned if the constant can't be found.
     * @return The value of the constant.
     */
    public static int getEnumFromTag(String constant, int defaultValue){
        if (constant == null) return defaultValue;
        constant = constant.toLowerCase().trim();
        //JCTableEnums
        if (constant.equals("all")) return JCTableEnum.ALL;
        else if (constant.equals("allcells")) return JCTableEnum.ALLCELLS;
        
        else if (constant.equals("border_etched_in")) return JCTableEnum.BORDER_ETCHED_IN;
        else if (constant.equals("border_etched_out")) return JCTableEnum.BORDER_ETCHED_OUT;
        else if (constant.equals("border_frame_in")) return JCTableEnum.BORDER_FRAME_IN;
        else if (constant.equals("border_frame_out")) return JCTableEnum.BORDER_FRAME_OUT;
        else if (constant.equals("border_in")) return JCTableEnum.BORDER_IN;
        else if (constant.equals("border_none")) return JCTableEnum.BORDER_NONE;
        else if (constant.equals("border_out")) return JCTableEnum.BORDER_OUT;
        else if (constant.equals("border_plain")) return JCTableEnum.BORDER_PLAIN;
        else if (constant.equals("border_thin")) return JCTableEnum.BORDER_THIN; 
        
        else if (constant.equals("bottom")) return JCTableEnum.BOTTOM;
       
        
        else if (constant.equals("center")) return JCTableEnum.CENTER;
        
        else if (constant.equals("left")) return JCTableEnum.LEFT;

        else if (constant.equals("middle")) return JCTableEnum.CENTER;
        else if (constant.equals("middlecenter")) return JCTableEnum.MIDDLECENTER;
        else if (constant.equals("middleleft")) return JCTableEnum.MIDDLELEFT;
        else if (constant.equals("middleright")) return JCTableEnum.MIDDLERIGHT;
        
        else if (constant.equals("repeat_column")) return JCTableEnum.REPEAT_COLUMN;
        else if (constant.equals("repeat_none")) return JCTableEnum.REPEAT_NONE;
        else if (constant.equals("repeat_row")) return JCTableEnum.REPEAT_ROW;        
        else if (constant.equals("repeat_right")) return JCTableEnum.RIGHT;
        
        else if (constant.equals("right")) return JCTableEnum.RIGHT;
        
        else if (constant.equals("top")) return JCTableEnum.TOP;
        
        //Data Types
        else if (constant.equals("text")) return DATA_text;
        else if (constant.equals("date")) return DATA_date;
        else if (constant.equals("numeric")) return DATA_numeric;
        else if (constant.equals("boolean")) return DATA_boolean;
        else if (constant.equals("list")) return DATA_list;
        else if (constant.equals("image")) return DATA_image;
        
        //adjustment operations
        else if (constant.equals("add")) return OPERATION_add;
        else if (constant.equals("subtract")) return OPERATION_subtract;
        else if (constant.equals("multiply")) return OPERATION_multiply;
        else if (constant.equals("divide")) return OPERATION_divide;
        else if (constant.equals("abs")) return OPERATION_abs;
        
        //cliphints
        else if (constant.equals("show_all")) return JCTableEnum.SHOW_ALL;
        else if (constant.equals("show_none")) return JCTableEnum.SHOW_NONE;
        else if (constant.equals("show_vertical")) return JCTableEnum.SHOW_VERTICAL;
        else if (constant.equals("show_horizontal")) return JCTableEnum.SHOW_HORIZONTAL;
        
        //columnwidth
        else if (constant.equals("variable")) return JCTableEnum.VARIABLE;
        
        
        else return defaultValue;
        
    }
    
}


