FileDocCategorySizeDatePackage
SelectionRecord.javaAPI DocApache Poi 3.0.18110Mon Jan 01 12:39:40 GMT 2007org.apache.poi.hssf.record

SelectionRecord

public class SelectionRecord extends Record
Title: Selection Record

Description: shows the user's selection on the sheet for write set num refs to 0

TODO : Fully implement reference subrecords. REFERENCE: PG 291 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

author
Andrew C. Oliver (acoliver at apache dot org)
author
Jason Height (jheight at chariot dot net dot au)
author
Glen Stampoultzis (glens at apache.org)

Fields Summary
public static final short
sid
private byte
field_1_pane
private int
field_2_row_active_cell
private short
field_3_col_active_cell
private short
field_4_ref_active_cell
private short
field_5_num_refs
private ArrayList
field_6_refs
Constructors Summary
public SelectionRecord()

    
public SelectionRecord(RecordInputStream in)
Constructs a Selection record and sets its fields appropriately.

param
id id must be 0x1d or an exception will be throw upon validation
param
size the size of the data area of the record
param
data data of the record (should not contain sid/len)

        super(in);
    
Methods Summary
public java.lang.Objectclone()

      SelectionRecord rec = new SelectionRecord();
      rec.field_1_pane = field_1_pane;
      rec.field_2_row_active_cell = field_2_row_active_cell;
      rec.field_3_col_active_cell = field_3_col_active_cell;
      rec.field_4_ref_active_cell = field_4_ref_active_cell;
      rec.field_5_num_refs = field_5_num_refs;
      rec.field_6_refs = field_6_refs;
      return rec;
    
protected voidfillFields(org.apache.poi.hssf.record.RecordInputStream in)

        field_1_pane            = in.readByte();
        //field_2_row_active_cell = LittleEndian.getShort(data, 1 + offset);
        field_2_row_active_cell = in.readUShort();
        field_3_col_active_cell = in.readShort();
        field_4_ref_active_cell = in.readShort();
        field_5_num_refs        = in.readShort();
        
        field_6_refs = new ArrayList(field_5_num_refs);
        for (int i=0; i<field_5_num_refs; i++) {
          field_6_refs.add(new Reference(in));
        }
    
public shortgetActiveCellCol()
get the active cell's col

return
col number of active cell

        return field_3_col_active_cell;
    
public shortgetActiveCellRef()
get the active cell's reference number

return
ref number of active cell

        return field_4_ref_active_cell;
    
public intgetActiveCellRow()
get the active cell's row

return
row number of active cell

        return field_2_row_active_cell;
    
public shortgetNumRefs()
get the number of cell refs (we don't support selection so set to 0

return
refs - number of references

        return field_5_num_refs;
    
public bytegetPane()
get which window pane this is for

return
pane

        return field_1_pane;
    
public intgetRecordSize()

        return 19;
    
public shortgetSid()

        return sid;
    
public intserialize(int offset, byte[] data)

        LittleEndian.putShort(data, 0 + offset, sid);
        LittleEndian.putShort(data, 2 + offset, ( short ) 15);
        data[ 4 + offset ] = getPane();
        //LittleEndian.putShort(data, 5 + offset, getActiveCellRow());
        LittleEndian.putShort(data, 5 + offset, ( short ) getActiveCellRow());
        LittleEndian.putShort(data, 7 + offset, getActiveCellCol());
        LittleEndian.putShort(data, 9 + offset, getActiveCellRef());
        LittleEndian.putShort(data, 11 + offset, ( short ) 1);
        LittleEndian.putShort(data, 13 + offset, ( short ) getActiveCellRow());
        LittleEndian.putShort(data, 15 + offset, ( short ) getActiveCellRow());
        data[ 17 + offset ] = (byte)getActiveCellCol();
        data[ 18 + offset ] = (byte)getActiveCellCol();
        return getRecordSize();
    
public voidsetActiveCellCol(short col)
set the active cell's col

param
col number of active cell

        field_3_col_active_cell = col;
    
public voidsetActiveCellRef(short ref)
set the active cell's reference number

param
ref number of active cell

        field_4_ref_active_cell = ref;
    
public voidsetActiveCellRow(int row)
set the active cell's row

param
row number of active cell

        field_2_row_active_cell = row;
    
public voidsetNumRefs(short refs)
set the number of cell refs (we don't support selection so set to 0

param
refs - number of references

        field_5_num_refs = refs;
    
public voidsetPane(byte pane)
set which window pane this is for

param
pane

        field_1_pane = pane;
    
public java.lang.StringtoString()

        StringBuffer buffer = new StringBuffer();

        buffer.append("[SELECTION]\n");
        buffer.append("    .pane            = ")
            .append(Integer.toHexString(getPane())).append("\n");
        buffer.append("    .activecellrow   = ")
            .append(Integer.toHexString(getActiveCellRow())).append("\n");
        buffer.append("    .activecellcol   = ")
            .append(Integer.toHexString(getActiveCellCol())).append("\n");
        buffer.append("    .activecellref   = ")
            .append(Integer.toHexString(getActiveCellRef())).append("\n");
        buffer.append("    .numrefs         = ")
            .append(Integer.toHexString(getNumRefs())).append("\n");
        buffer.append("[/SELECTION]\n");
        return buffer.toString();
    
protected voidvalidateSid(short id)

        if (id != sid)
        {
            throw new RecordFormatException("NOT A valid Selection RECORD");
        }