Open Source Repository

Home /excel/jxl-2.6.12 | Repository Home


jxl/biff/BuiltInFormat.java
/*********************************************************************
*
*      Copyright (C) 2002 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/

package jxl.biff;

import jxl.format.Format;

/**
 * The excel string for the various built in formats.  Used to present
 * the cell format information back to the user
 *
 * The difference between this class and the various format object contained
 * in the jxl.write package is that this object contains the Excel strings,
 * not their java equivalents
 */
final class BuiltInFormat implements Format, DisplayFormat
{
  /**
   * The excel format string
   */
  private String formatString;

  /**
   * The index
   */
  private int formatIndex;

  /**
   * Constructor
   *
   @param s the format string
   @param i the format index
   */
  private BuiltInFormat(String s, int i)
  {
    formatIndex = i;
    formatString = s;
  }

  /**
   * Accesses the excel format string which is applied to the cell
   * Note that this is the string that excel uses, and not the java
   * equivalent
   *
   @return the cell format string
   */
  public String getFormatString()
  {
    return formatString;
  }

  /**
   * Accessor for the index style of this format
   *
   @return the index for this format
   */
  public int getFormatIndex()
  {
    return formatIndex;
  }
  /**
   * Accessor to see whether this format has been initialized
   *
   @return TRUE if initialized, FALSE otherwise
   */
  public boolean isInitialized()
  {
    return true;
  }
  /**
   * Initializes this format with the specified index number
   *
   @param pos the position of this format record in the workbook
   */
  public void initialize(int pos)
  {
  }

  /**
   * Accessor to determine whether or not this format is built in
   *
   @return TRUE if this format is a built in format, FALSE otherwise
   */
  public boolean isBuiltIn()
  {
    return true;
  }

  /**
   * Equals method
   *
   @return TRUE if the two built in formats are equal, FALSE otherwise
   */
  public boolean equals(Object o)
  {
    if (o == this)
    {
      return true;
    }

    if (!(instanceof BuiltInFormat))
    {
      return false;
    }

    BuiltInFormat bif = (BuiltInFormato;
    return (formatIndex == bif.formatIndex);
  }

  /**
   * The list of built in formats
   */
  public static BuiltInFormat[] builtIns = new BuiltInFormat[0x32];

  // Populate the built ins
  static
  {
    builtIns[0x0new BuiltInFormat(""0);
    builtIns[0x1new BuiltInFormat("0"1);
    builtIns[0x2new BuiltInFormat("0.00"2);
    builtIns[0x3new BuiltInFormat("#,##0"3);
    builtIns[0x4new BuiltInFormat("#,##0.00"4);
    builtIns[0x5new BuiltInFormat("($#,##0_);($#,##0)"5);
    builtIns[0x6new BuiltInFormat("($#,##0_);[Red]($#,##0)"6);
    builtIns[0x7new BuiltInFormat("($#,##0_);[Red]($#,##0)"7);
    builtIns[0x8new BuiltInFormat("($#,##0.00_);[Red]($#,##0.00)"8);
    builtIns[0x9new BuiltInFormat("0%"9);
    builtIns[0xanew BuiltInFormat("0.00%"10);
    builtIns[0xbnew BuiltInFormat("0.00E+00"11);
    builtIns[0xcnew BuiltInFormat("# ?/?"12);
    builtIns[0xdnew BuiltInFormat("# ??/??"13);
    builtIns[0xenew BuiltInFormat("dd/mm/yyyy"14);
    builtIns[0xfnew BuiltInFormat("d-mmm-yy"15);
    builtIns[0x10new BuiltInFormat("d-mmm"16);
    builtIns[0x11new BuiltInFormat("mmm-yy"17);
    builtIns[0x12new BuiltInFormat("h:mm AM/PM"18);
    builtIns[0x13new BuiltInFormat("h:mm:ss AM/PM"19);
    builtIns[0x14new BuiltInFormat("h:mm"20);
    builtIns[0x15new BuiltInFormat("h:mm:ss"21);
    builtIns[0x16new BuiltInFormat("m/d/yy h:mm"22);
    builtIns[0x25new BuiltInFormat("(#,##0_);(#,##0)"0x25);
    builtIns[0x26new BuiltInFormat("(#,##0_);[Red](#,##0)"0x26);
    builtIns[0x27new BuiltInFormat("(#,##0.00_);(#,##0.00)"0x27);
    builtIns[0x28new BuiltInFormat("(#,##0.00_);[Red](#,##0.00)"0x28);
    builtIns[0x29new BuiltInFormat
      ("_(*#,##0_);_(*(#,##0);_(*\"-\"_);(@_)"0x29);
    builtIns[0x2anew BuiltInFormat
      ("_($*#,##0_);_($*(#,##0);_($*\"-\"_);(@_)"0x2a);
    builtIns[0x2bnew BuiltInFormat
      ("_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);(@_)"0x2b);
    builtIns[0x2cnew BuiltInFormat
      ("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);(@_)"0x2c);
    builtIns[0x2dnew BuiltInFormat("mm:ss"0x2d);
    builtIns[0x2enew BuiltInFormat("[h]mm:ss"0x2e);
    builtIns[0x2fnew BuiltInFormat("mm:ss.0"0x2f);
    builtIns[0x30new BuiltInFormat("##0.0E+0"0x30);
    builtIns[0x31new BuiltInFormat("@"0x31);
  }
}