/*********************************************************************
*
* Copyright (C) 2004 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.common.Logger;
import jxl.read.biff.Record;
/**
* Record containing the list of data validation settings for a given sheet
*/
public class DataValidityListRecord extends WritableRecordData
{
private static Logger logger = Logger.getLogger
(DataValidityListRecord.class);
/**
* The number of settings records associated with this list
*/
private int numSettings;
/**
* The object id of the associated down arrow
*/
private int objectId;
/**
* The dval parser
*/
private DValParser dvalParser;
/**
* The data
*/
private byte[] data;
/**
* Constructor
*/
public DataValidityListRecord(Record t)
{
super(t);
data = getRecord().getData();
objectId = IntegerHelper.getInt(data[10], data[11], data[12], data[13]);
numSettings = IntegerHelper.getInt(data[14], data[15], data[16], data[17]);
}
/**
* Constructor called when generating a data validity list from the API
*/
public DataValidityListRecord(DValParser dval)
{
super(Type.DVAL);
dvalParser = dval;
}
/**
* Copy constructor
*
* @param dvlr the record copied from a read only sheet
*/
DataValidityListRecord(DataValidityListRecord dvlr)
{
super(Type.DVAL);
data = dvlr.getData();
}
/**
* Accessor for the number of settings records associated with this list
*/
int getNumberOfSettings()
{
return numSettings;
}
/**
* Retrieves the data for output to binary file
*
* @return the data to be written
*/
public byte[] getData()
{
if (dvalParser == null)
{
return data;
}
return dvalParser.getData();
}
/**
* Called when a remove row or column results in one of DV records being
* removed
*/
void dvRemoved()
{
if (dvalParser == null)
{
dvalParser = new DValParser(data);
}
dvalParser.dvRemoved();
}
/**
* Called when a writable DV record is added to a copied validity list
*/
void dvAdded()
{
if (dvalParser == null)
{
dvalParser = new DValParser(data);
}
dvalParser.dvAdded();
}
/**
* Accessor for the number of DV records
*
* @return the number of DV records for this list
*/
public boolean hasDVRecords()
{
if (dvalParser == null)
{
return true;
}
return dvalParser.getNumberOfDVRecords() > 0;
}
/**
* Accessor for the object id
*
* @return the object id
*/
public int getObjectId()
{
if (dvalParser == null)
{
return objectId;
}
return dvalParser.getObjectId();
}
}
|