/*********************************************************************
*
* 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.write.biff;
import jxl.biff.DisplayFormat;
import jxl.biff.FontRecord;
import jxl.biff.XFRecord;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.Orientation;
import jxl.format.Pattern;
import jxl.format.VerticalAlignment;
import jxl.write.WriteException;
/**
* A cell XF Record
*/
public class CellXFRecord extends XFRecord
{
/**
* Constructor
*
* @param fnt the font
* @param form the format
*/
protected CellXFRecord(FontRecord fnt, DisplayFormat form )
{
super(fnt, form);
setXFDetails(XFRecord.cell,0);
}
/**
* Copy constructor. Invoked when copying formats to handle cell merging
*
* @param fmt the format to copy
*/
CellXFRecord(XFRecord fmt )
{
super(fmt);
setXFDetails(XFRecord.cell,0);
}
/**
* A public copy constructor which can be used for copy formats between
* different sheets
*/
protected CellXFRecord(CellFormat format)
{
super(format);
}
/**
* Sets the alignment for the cell
*
* @exception WriteException
* @param a the alignment
*/
public void setAlignment(Alignment a) throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFAlignment(a);
}
/**
* Sets the background for the cell
*
* @exception WriteException
* @param c the background colour
* @param p the background patter
*/
public void setBackground(Colour c, Pattern p) throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFBackground(c, p);
super.setXFCellOptions(0x4000);
}
/**
* Sets whether or not this XF record locks the cell
*
* @param l the locked flag
* @exception WriteException
*/
public void setLocked(boolean l) throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFLocked(l);
super.setXFCellOptions(0x8000);
}
/**
* Sets the indentation of the cell text
*
* @param i the indentation
*/
public void setIndentation(int i) throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFIndentation(i);
}
/**
* Sets the shrink to fit flag
*
* @param b the shrink to fit flag
*/
public void setShrinkToFit(boolean s) throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFShrinkToFit(s);
}
/**
* Sets the vertical alignment for cells with this style
*
* @exception WriteException
* @param va the vertical alignment
*/
public void setVerticalAlignment(VerticalAlignment va)
throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFVerticalAlignment(va);
}
/**
* Sets the text orientation for cells with this style
*
* @exception WriteException
* @param o the orientation
*/
public void setOrientation(Orientation o)
throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFOrientation(o);
}
/**
* Sets the text wrapping for cells with this style. If the parameter is
* set to TRUE, then data in this cell will be wrapped around, and the
* cell's height adjusted accordingly
*
* @exception WriteException
* @param w the wrap
*/
public void setWrap(boolean w) throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
super.setXFWrap(w);
}
/**
* Sets the border style for cells with this format
*
* @exception WriteException
* @param b the border
* @param ls the line for the specified border
*/
public void setBorder(Border b, BorderLineStyle ls, Colour c)
throws WriteException
{
if (isInitialized())
{
throw new JxlWriteException(JxlWriteException.formatInitialized);
}
if (b == Border.ALL)
{
// Apply to all
super.setXFBorder(Border.LEFT, ls, c);
super.setXFBorder(Border.RIGHT, ls, c);
super.setXFBorder(Border.TOP, ls, c);
super.setXFBorder(Border.BOTTOM, ls, c);
return;
}
if (b == Border.NONE)
{
// Apply to all
super.setXFBorder(Border.LEFT, BorderLineStyle.NONE, Colour.BLACK);
super.setXFBorder(Border.RIGHT, BorderLineStyle.NONE, Colour.BLACK);
super.setXFBorder(Border.TOP, BorderLineStyle.NONE, Colour.BLACK);
super.setXFBorder(Border.BOTTOM, BorderLineStyle.NONE, Colour.BLACK);
return;
}
super.setXFBorder(b, ls, c);
}
}
|