Bugzilla 46660 - added 'hidden' property to Workbook

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@744253 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2009-02-13 21:46:44 +00:00
parent 76fcce669b
commit 521656d9c2
6 changed files with 73 additions and 94 deletions

View File

@ -37,6 +37,7 @@
<!-- Don't forget to update status.xml too! --> <!-- Don't forget to update status.xml too! -->
<release version="3.5-beta6" date="2008-??-??"> <release version="3.5-beta6" date="2008-??-??">
<action dev="POI-DEVELOPERS" type="add">46660 - added Workbook getHidden() and setHidden(boolean)</action>
<action dev="POI-DEVELOPERS" type="fix">46693 - Fixed bugs serialization bugs in records: CHARTFORMAT, SHTPROPS, SXVD and SXVDEX</action> <action dev="POI-DEVELOPERS" type="fix">46693 - Fixed bugs serialization bugs in records: CHARTFORMAT, SHTPROPS, SXVD and SXVDEX</action>
<action dev="POI-DEVELOPERS" type="fix">46627 - Fixed offset of added images if Pictures stream contains pictures with zero length</action> <action dev="POI-DEVELOPERS" type="fix">46627 - Fixed offset of added images if Pictures stream contains pictures with zero length</action>
</release> </release>

View File

@ -34,6 +34,7 @@
<!-- Don't forget to update changes.xml too! --> <!-- Don't forget to update changes.xml too! -->
<changes> <changes>
<release version="3.5-beta6" date="2008-??-??"> <release version="3.5-beta6" date="2008-??-??">
<action dev="POI-DEVELOPERS" type="add">46660 - added Workbook getHidden() and setHidden(boolean)</action>
<action dev="POI-DEVELOPERS" type="fix">46693 - Fixed bugs serialization bugs in records: CHARTFORMAT, SHTPROPS, SXVD and SXVDEX</action> <action dev="POI-DEVELOPERS" type="fix">46693 - Fixed bugs serialization bugs in records: CHARTFORMAT, SHTPROPS, SXVD and SXVDEX</action>
<action dev="POI-DEVELOPERS" type="fix">46627 - Fixed offset of added images if Pictures stream contains pictures with zero length</action> <action dev="POI-DEVELOPERS" type="fix">46627 - Fixed offset of added images if Pictures stream contains pictures with zero length</action>
</release> </release>

View File

@ -537,88 +537,55 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm
} }
/** /**
* get the sheet name * @return Sheet name for the specified index
* @param sheetIx Number
* @return Sheet name
*/ */
public String getSheetName(int sheetIx) public String getSheetName(int sheetIndex) {
{ validateSheetIndex(sheetIndex);
validateSheetIndex(sheetIx); return workbook.getSheetName(sheetIndex);
return workbook.getSheetName(sheetIx);
} }
/** public boolean isHidden() {
* Check whether a sheet is hidden. return workbook.getWindowOne().getHidden();
* Note that a sheet could instead be }
* set to be very hidden, which is different
* ({@link #isSheetVeryHidden(int)}) public void setHidden(boolean hiddenFlag) {
* @param sheetIx Number workbook.getWindowOne().setHidden(hiddenFlag);
* @return True if sheet is hidden }
*/
public boolean isSheetHidden(int sheetIx) { public boolean isSheetHidden(int sheetIx) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
return workbook.isSheetHidden(sheetIx); return workbook.isSheetHidden(sheetIx);
} }
/**
* Check whether a sheet is very hidden.
* This is different from the normal
* hidden status
* ({@link #isSheetHidden(int)})
* @param sheetIx Number
* @return True if sheet is very hidden
*/
public boolean isSheetVeryHidden(int sheetIx) { public boolean isSheetVeryHidden(int sheetIx) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
return workbook.isSheetVeryHidden(sheetIx); return workbook.isSheetVeryHidden(sheetIx);
} }
/**
* Hide or unhide a sheet
*
* @param sheetIx The sheet index
* @param hidden True to mark the sheet as hidden, false otherwise
*/
public void setSheetHidden(int sheetIx, boolean hidden) { public void setSheetHidden(int sheetIx, boolean hidden) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
workbook.setSheetHidden(sheetIx, hidden); workbook.setSheetHidden(sheetIx, hidden);
} }
/**
* Hide or unhide a sheet.
* 0 = not hidden
* 1 = hidden
* 2 = very hidden.
*
* @param sheetIx The sheet number
* @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden
*/
public void setSheetHidden(int sheetIx, int hidden) { public void setSheetHidden(int sheetIx, int hidden) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
workbook.setSheetHidden(sheetIx, hidden); workbook.setSheetHidden(sheetIx, hidden);
} }
/*
* get the sheet's index
* @param name sheet name
* @return sheet index or -1 if it was not found.
*/
/** Returns the index of the sheet by his name /** Returns the index of the sheet by his name
* @param name the sheet name * @param name the sheet name
* @return index of the sheet (0 based) * @return index of the sheet (0 based)
*/ */
public int getSheetIndex(String name) public int getSheetIndex(String name){
{ return workbook.getSheetIndex(name);
int retval = workbook.getSheetIndex(name);
return retval;
} }
/** Returns the index of the given sheet /** Returns the index of the given sheet
* @param sheet the sheet to look up * @param sheet the sheet to look up
* @return index of the sheet (0 based). <tt>-1</tt> if not found * @return index of the sheet (0 based). <tt>-1</tt> if not found
*/ */
public int getSheetIndex(org.apache.poi.ss.usermodel.Sheet sheet) public int getSheetIndex(org.apache.poi.ss.usermodel.Sheet sheet) {
{
for(int i=0; i<_sheets.size(); i++) { for(int i=0; i<_sheets.size(); i++) {
if(_sheets.get(i) == sheet) { if(_sheets.get(i) == sheet) {
return i; return i;
@ -628,7 +595,6 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm
} }
/** /**
<<<<<<< .working
* Returns the external sheet index of the sheet * Returns the external sheet index of the sheet
* with the given internal index, creating one * with the given internal index, creating one
* if needed. * if needed.

View File

@ -411,6 +411,16 @@ public interface Workbook {
*/ */
CreationHelper getCreationHelper(); CreationHelper getCreationHelper();
/**
* @return <code>false</code> if this workbook is not visible in the GUI
*/
boolean isHidden();
/**
* @param hiddenFlag pass <code>false</code> to make the workbook visible in the GUI
*/
void setHidden(boolean hiddenFlag);
/** /**
* Check whether a sheet is hidden. * Check whether a sheet is hidden.
* <p> * <p>
@ -418,9 +428,9 @@ public interface Workbook {
* ({@link #isSheetVeryHidden(int)}) * ({@link #isSheetVeryHidden(int)})
* </p> * </p>
* @param sheetIx Number * @param sheetIx Number
* @return True if sheet is hidden * @return <code>true</code> if sheet is hidden
*/ */
boolean isSheetHidden(int sheetIx) ; boolean isSheetHidden(int sheetIx);
/** /**
* Check whether a sheet is very hidden. * Check whether a sheet is very hidden.
@ -452,5 +462,4 @@ public interface Workbook {
* @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden * @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden
*/ */
void setSheetHidden(int sheetIx, int hidden); void setSheetHidden(int sheetIx, int hidden);
} }

View File

@ -129,7 +129,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* blank cells when fetching from a row. * blank cells when fetching from a row.
* See {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy} * See {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy}
*/ */
private MissingCellPolicy missingCellPolicy = Row.RETURN_NULL_AND_BLANK; private MissingCellPolicy _missingCellPolicy = Row.RETURN_NULL_AND_BLANK;
/** /**
* array of pictures for this workbook * array of pictures for this workbook
@ -514,7 +514,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
if(pictures == null) { if(pictures == null) {
//In OOXML pictures are referred to in sheets, //In OOXML pictures are referred to in sheets,
//dive into sheet's relations, select drawings and their images //dive into sheet's relations, select drawings and their images
pictures = new ArrayList(); pictures = new ArrayList<XSSFPictureData>();
for(XSSFSheet sh : sheets){ for(XSSFSheet sh : sheets){
for(POIXMLDocumentPart dr : sh.getRelations()){ for(POIXMLDocumentPart dr : sh.getRelations()){
if(dr instanceof XSSFDrawing){ if(dr instanceof XSSFDrawing){
@ -788,7 +788,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* {@link MissingCellPolicy} * {@link MissingCellPolicy}
*/ */
public MissingCellPolicy getMissingCellPolicy() { public MissingCellPolicy getMissingCellPolicy() {
return missingCellPolicy; return _missingCellPolicy;
} }
/** /**
* Sets the policy on what to do when * Sets the policy on what to do when
@ -798,7 +798,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* {@link MissingCellPolicy} * {@link MissingCellPolicy}
*/ */
public void setMissingCellPolicy(MissingCellPolicy missingCellPolicy) { public void setMissingCellPolicy(MissingCellPolicy missingCellPolicy) {
this.missingCellPolicy = missingCellPolicy; _missingCellPolicy = missingCellPolicy;
} }
/** /**
@ -1077,7 +1077,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTWorkbook.type.getName().getNamespaceURI(), "workbook")); xmlOptions.setSaveSyntheticDocumentElement(new QName(CTWorkbook.type.getName().getNamespaceURI(), "workbook"));
Map map = new HashMap(); Map<String, String> map = new HashMap<String, String>();
map.put(STRelationshipId.type.getName().getNamespaceURI(), "r"); map.put(STRelationshipId.type.getName().getNamespaceURI(), "r");
xmlOptions.setSaveSuggestedPrefixes(map); xmlOptions.setSaveSuggestedPrefixes(map);
@ -1208,59 +1208,33 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
} }
return embedds; return embedds;
} }
public boolean isHidden() {
throw new RuntimeException("Not implemented yet");
}
public void setHidden(boolean hiddenFlag) {
throw new RuntimeException("Not implemented yet");
}
/**
* Check whether a sheet is hidden.
* Note that a sheet could instead be set to be very hidden, which is different
* ({@link #isSheetVeryHidden(int)})
* @param sheetIx Number
* @return True if sheet is hidden
* @throws IllegalArgumentException if sheetIx is invalid
*/
public boolean isSheetHidden(int sheetIx) { public boolean isSheetHidden(int sheetIx) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
CTSheet ctSheet = sheets.get(sheetIx).sheet; CTSheet ctSheet = sheets.get(sheetIx).sheet;
return ctSheet.getState() == STSheetState.HIDDEN; return ctSheet.getState() == STSheetState.HIDDEN;
} }
/**
* Check whether a sheet is very hidden.
* This is different from the normal hidden status ({@link #isSheetHidden(int)})
* @param sheetIx Number
* @return True if sheet is very hidden
* @throws IllegalArgumentException if sheetIx is invalid
*/
public boolean isSheetVeryHidden(int sheetIx) { public boolean isSheetVeryHidden(int sheetIx) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
CTSheet ctSheet = sheets.get(sheetIx).sheet; CTSheet ctSheet = sheets.get(sheetIx).sheet;
return ctSheet.getState() == STSheetState.VERY_HIDDEN; return ctSheet.getState() == STSheetState.VERY_HIDDEN;
} }
/**
* Hide or unhide a sheet
*
* @param sheetIx The sheet index
* @param hidden True to mark the sheet as hidden, false otherwise
* @throws IllegalArgumentException if sheetIx is invalid
*/
public void setSheetHidden(int sheetIx, boolean hidden) { public void setSheetHidden(int sheetIx, boolean hidden) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
CTSheet ctSheet = sheets.get(sheetIx).sheet; CTSheet ctSheet = sheets.get(sheetIx).sheet;
ctSheet.setState(hidden ? STSheetState.HIDDEN : STSheetState.VISIBLE); ctSheet.setState(hidden ? STSheetState.HIDDEN : STSheetState.VISIBLE);
} }
/**
* Hide or unhide a sheet.
* <pre>
* 0 = not hidden
* 1 = hidden
* 2 = very hidden.
* </pre>
*
* @param sheetIx The sheet number
* @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden
* @throws IllegalArgumentException if sheetIx is invalid
*/
public void setSheetHidden(int sheetIx, int hidden) { public void setSheetHidden(int sheetIx, int hidden) {
validateSheetIndex(sheetIx); validateSheetIndex(sheetIx);
CTSheet ctSheet = sheets.get(sheetIx).sheet; CTSheet ctSheet = sheets.get(sheetIx).sheet;

View File

@ -32,6 +32,7 @@ import org.apache.poi.hssf.record.NameRecord;
import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.RecordBase; import org.apache.poi.hssf.record.RecordBase;
import org.apache.poi.hssf.record.RecordFormatException; import org.apache.poi.hssf.record.RecordFormatException;
import org.apache.poi.hssf.record.WindowOneRecord;
import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.hssf.record.formula.Area3DPtg;
import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.TempFile; import org.apache.poi.util.TempFile;
@ -118,6 +119,33 @@ public final class TestHSSFWorkbook extends TestCase {
fail("WindowOneRecord in Workbook is probably not initialized"); fail("WindowOneRecord in Workbook is probably not initialized");
} }
} }
/**
* Tests for {@link HSSFWorkbook#isHidden()} etc
*/
public void testHidden() {
HSSFWorkbook wb = new HSSFWorkbook();
WindowOneRecord w1 = wb.getWorkbook().getWindowOne();
assertEquals(false, wb.isHidden());
assertEquals(false, w1.getHidden());
wb.setHidden(true);
assertEquals(true, wb.isHidden());
assertEquals(true, w1.getHidden());
wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
w1 = wb.getWorkbook().getWindowOne();
wb.setHidden(true);
assertEquals(true, wb.isHidden());
assertEquals(true, w1.getHidden());
wb.setHidden(false);
assertEquals(false, wb.isHidden());
assertEquals(false, w1.getHidden());
}
public void testSheetSelection() { public void testSheetSelection() {
HSSFWorkbook b = new HSSFWorkbook(); HSSFWorkbook b = new HSSFWorkbook();