private Iterator valueRecIterator = null;
private Iterator rowRecIterator = null;
protected int eofLoc = 0;
+ protected ProtectRecord protect = null;
public static final byte PANE_LOWER_RIGHT = (byte)0;
public static final byte PANE_UPPER_RIGHT = (byte)1;
{
retval.printSetup = (PrintSetupRecord) rec;
}
+ else if ( rec.getSid() == ProtectRecord.sid )
+ {
+ retval.protect = (ProtectRecord) rec;
+ }
else if ( rec.getSid() == LeftMarginRecord.sid)
{
retval.getMargins()[LeftMargin] = (LeftMarginRecord) rec;
retval.selection =
(SelectionRecord) retval.createSelection();
records.add(retval.selection);
+ retval.protect = (ProtectRecord) retval.createProtect();
+ records.add(retval.protect);
records.add(retval.createEOF());
retval.records = records;
log.log(log.DEBUG, "Sheet createsheet from scratch exit");
margins = new Margin[4];
return margins;
}
+
+ /**
+ * creates a Protect record with protect set to false.
+ * @see org.apache.poi.hssf.record.ProtectRecord
+ * @see org.apache.poi.hssf.record.Record
+ * @return a ProtectRecord
+ */
+
+ protected Record createProtect()
+ {
+ log.log(log.DEBUG, "create protect record with protection disabled");
+ ProtectRecord retval = new ProtectRecord();
+
+ retval.setProtect(false);
+ // by default even when we support encryption we won't
+ return retval; // want to default to be protected
+ }
+
+ public ProtectRecord getProtect()
+ {
+ return protect;
+ }
}
* @return whether to protect the sheet or not
*/
- public short getProtect()
+ public boolean getProtect()
{
- return field_1_protect;
+ return (field_1_protect == 1);
}
public String toString()
StringBuffer buffer = new StringBuffer();
buffer.append("[PROTECT]\n");
- buffer.append(" .protected = ")
- .append(Integer.toHexString(getProtect())).append("\n");
+ buffer.append(" .protect = ").append(getProtect())
+ .append("\n");
buffer.append("[/PROTECT]\n");
return buffer.toString();
}
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset,
(( short ) 0x02)); // 2 bytes (6 total)
- LittleEndian.putShort(data, 4 + offset, getProtect());
+ LittleEndian.putShort(data, 4 + offset, field_1_protect);
return getRecordSize();
}
* @return whether to protect the workbook or not
*/
- public short getProtect()
- {
- return field_1_protect;
- }
+ public boolean getProtect()
+ {
+ return (field_1_protect == 1);
+ }
public String toString()
{
StringBuffer buffer = new StringBuffer();
buffer.append("[PROT4REV]\n");
- buffer.append(" .rowheight = ")
- .append(Integer.toHexString(getProtect())).append("\n");
+ buffer.append(" .protect = ").append(getProtect())
+ .append("\n");
buffer.append("[/PROT4REV]\n");
return buffer.toString();
}
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset,
(( short ) 0x02)); // 2 bytes (6 total)
- LittleEndian.putShort(data, 4 + offset, getProtect());
+ LittleEndian.putShort(data, 4 + offset, field_1_protect);
return getRecordSize();
}
sclRecord.setDenominator((short)denominator);
getSheet().setSCLRecord(sclRecord);
}
+
+ /**
+ * Answer whether protection is enabled or disabled
+ * @return true => protection enabled; false => protection disabled
+ */
+ public boolean getProtect() {
+ return getSheet().getProtect().getProtect();
+ }
+
+ /**
+ * Sets the protection on enabled or disabled
+ * @param protect true => protection enabled; false => protection disabled
+ */
+ public void setProtect(boolean protect) {
+ getSheet().getProtect().setProtect(protect);
+ }
/**
* Shifts the merged regions left or right depending on mode
//dont check if it's not within the shifted area
if (! (inStart && inEnd)) continue;
- //only shift if the region outside the shifted rows is not merged too
+ //only shift if the region outside the shifted rows is not merged too
if (!merged.contains(startRow-1, (short)0) && !merged.contains(endRow+1, (short)0)){
merged.setRowFrom(merged.getRowFrom()+n);
merged.setRowTo(merged.getRowTo()+n);
import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.record.HCenterRecord;
+import org.apache.poi.hssf.record.ProtectRecord;
import org.apache.poi.hssf.record.SCLRecord;
import org.apache.poi.hssf.record.VCenterRecord;
import org.apache.poi.hssf.record.WSBoolRecord;
cell.setCellValue("Difference Check");
assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
}
+
+ /**
+ * Test that the ProtectRecord is included when creating or cloning a sheet
+ */
+ public void testProtect() {
+ HSSFWorkbook workbook = new HSSFWorkbook();
+ HSSFSheet hssfSheet = workbook.createSheet();
+ Sheet sheet = hssfSheet.getSheet();
+ ProtectRecord protect = sheet.getProtect();
+
+ assertFalse(protect.getProtect());
+
+ // This will tell us that cloneSheet, and by extension,
+ // the list forms of createSheet leave us with an accessible
+ // ProtectRecord.
+ hssfSheet.setProtect(true);
+ Sheet cloned = sheet.cloneSheet();
+ assertNotNull(cloned.getProtect());
+ assertTrue(hssfSheet.getProtect());
+ }
+
public void testZoom()
throws Exception