From b6967b691a5243cbd5a3587f2150b03466492647 Mon Sep 17 00:00:00 2001 From: Shawn Laubach Date: Fri, 25 Jul 2003 14:28:52 +0000 Subject: [PATCH] Added features to test and change the display of gridlines, formulas, and row/column headings. This is in reference to bug 21884. Started keeping track of the WindowTwoRecord reference to easy update without a search. Modified other procedures to use the reference where possible. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/branches/REL_2_BRANCH@353243 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/hssf/model/Sheet.java | 69 ++++++++++++++++--- .../apache/poi/hssf/usermodel/HSSFSheet.java | 46 +++++++++++++ .../poi/hssf/usermodel/TestHSSFSheet.java | 45 +++++++++++- 3 files changed, 148 insertions(+), 12 deletions(-) diff --git a/src/java/org/apache/poi/hssf/model/Sheet.java b/src/java/org/apache/poi/hssf/model/Sheet.java index d68be077b..a14d06a21 100644 --- a/src/java/org/apache/poi/hssf/model/Sheet.java +++ b/src/java/org/apache/poi/hssf/model/Sheet.java @@ -108,6 +108,7 @@ public class Sheet implements Model protected HeaderRecord header = null; protected FooterRecord footer = null; protected PrintGridlinesRecord printGridlines = null; + protected WindowTwoRecord windowTwo = null; protected MergeCellsRecord merged = null; protected Margin margins[] = null; protected ArrayList mergedRecords = new ArrayList(); @@ -282,6 +283,10 @@ public class Sheet implements Model { retval.selection = (SelectionRecord) rec; } + else if ( rec.getSid() == WindowTwoRecord.sid ) + { + retval.windowTwo = (WindowTwoRecord) rec; + } if (rec != null) { @@ -408,7 +413,7 @@ public class Sheet implements Model retval.dims = ( DimensionsRecord ) retval.createDimensions(); retval.dimsloc = 19; records.add(retval.dims); - records.add(retval.createWindowTwo()); + records.add(retval.windowTwo = retval.createWindowTwo()); retval.setLoc(records.size() - 1); retval.selection = (SelectionRecord) retval.createSelection(); @@ -2037,7 +2042,7 @@ public class Sheet implements Model * @return record containing a WindowTwoRecord */ - protected Record createWindowTwo() + protected WindowTwoRecord createWindowTwo() { WindowTwoRecord retval = new WindowTwoRecord(); @@ -2338,7 +2343,6 @@ public class Sheet implements Model * @param sel True to select the sheet, false otherwise. */ public void setSelected(boolean sel) { - WindowTwoRecord windowTwo = (WindowTwoRecord) findFirstRecordBySid(WindowTwoRecord.sid); windowTwo.setSelected(sel); } @@ -2437,9 +2441,8 @@ public class Sheet implements Model } records.add(loc+1, pane); - WindowTwoRecord windowRecord = (WindowTwoRecord) records.get(loc); - windowRecord.setFreezePanes(true); - windowRecord.setFreezePanesNoSplit(true); + windowTwo.setFreezePanes(true); + windowTwo.setFreezePanesNoSplit(true); SelectionRecord sel = (SelectionRecord) findFirstRecordBySid(SelectionRecord.sid); // SelectionRecord sel2 = (SelectionRecord) sel.clone(); @@ -2487,9 +2490,8 @@ public class Sheet implements Model r.setActivePane((short) activePane); records.add(loc+1, r); - WindowTwoRecord windowRecord = (WindowTwoRecord) records.get(loc); - windowRecord.setFreezePanes(false); - windowRecord.setFreezePanesNoSplit(false); + windowTwo.setFreezePanes(false); + windowTwo.setFreezePanesNoSplit(false); SelectionRecord sel = (SelectionRecord) findFirstRecordBySid(SelectionRecord.sid); // SelectionRecord sel2 = (SelectionRecord) sel.clone(); @@ -2523,6 +2525,54 @@ public class Sheet implements Model this.selection = selection; } + /** + * Sets whether the gridlines are shown in a viewer. + * @param show whether to show gridlines or not + */ + public void setDisplayGridlines(boolean show) { + windowTwo.setDisplayGridlines(show); + } + + /** + * Returns if gridlines are displayed. + * @return whether gridlines are displayed + */ + public boolean isDisplayGridlines() { + return windowTwo.getDisplayGridlines(); + } + + /** + * Sets whether the formulas are shown in a viewer. + * @param show whether to show formulas or not + */ + public void setDisplayFormulas(boolean show) { + windowTwo.setDisplayFormulas(show); + } + + /** + * Returns if formulas are displayed. + * @return whether formulas are displayed + */ + public boolean isDisplayFormulas() { + return windowTwo.getDisplayFormulas(); + } + + /** + * Sets whether the RowColHeadings are shown in a viewer. + * @param show whether to show RowColHeadings or not + */ + public void setDisplayRowColHeadings(boolean show) { + windowTwo.setDisplayRowColHeadings(show); + } + + /** + * Returns if RowColHeadings are displayed. + * @return whether RowColHeadings are displayed + */ + public boolean isDisplayRowColHeadings() { + return windowTwo.getDisplayRowColHeadings(); + } + /** * Returns the array of margins. If not created, will create. * @@ -2533,5 +2583,4 @@ public class Sheet implements Model margins = new Margin[4]; return margins; } - } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 2f6ec6f50..798b97633 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -1085,5 +1085,51 @@ public class HSSFSheet getSheet().createSplitPane( xSplitPos, ySplitPos, topRow, leftmostColumn, activePane ); } + /** + * Sets whether the gridlines are shown in a viewer. + * @param show whether to show gridlines or not + */ + public void setDisplayGridlines(boolean show) { + sheet.setDisplayGridlines(show); + } + /** + * Returns if gridlines are displayed. + * @return whether gridlines are displayed + */ + public boolean isDisplayGridlines() { + return sheet.isDisplayGridlines(); + } + + /** + * Sets whether the formulas are shown in a viewer. + * @param show whether to show formulas or not + */ + public void setDisplayFormulas(boolean show) { + sheet.setDisplayFormulas(show); + } + + /** + * Returns if formulas are displayed. + * @return whether formulas are displayed + */ + public boolean isDisplayFormulas() { + return sheet.isDisplayFormulas(); + } + + /** + * Sets whether the RowColHeadings are shown in a viewer. + * @param show whether to show RowColHeadings or not + */ + public void setDisplayRowColHeadings(boolean show) { + sheet.setDisplayRowColHeadings(show); + } + + /** + * Returns if RowColHeadings are displayed. + * @return whether RowColHeadings are displayed + */ + public boolean isDisplayRowColHeadings() { + return sheet.isDisplayRowColHeadings(); + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java index 2ce397c26..e2e30f73f 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -318,8 +318,49 @@ public class TestHSSFSheet } + /** + * Tests the display of gridlines, formulas, and rowcolheadings. + * @author Shawn Laubach (slaubach at apache dot org) + */ + public void testDisplayOptions() throws Exception { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet(); + + File tempFile = File.createTempFile("display", "test.xls"); + FileOutputStream stream = new FileOutputStream(tempFile); + wb.write(stream); + stream.close(); + + FileInputStream readStream = new FileInputStream(tempFile); + wb = new HSSFWorkbook(readStream); + sheet = wb.getSheetAt(0); + readStream.close(); + + assertEquals(sheet.isDisplayGridlines(), true); + assertEquals(sheet.isDisplayRowColHeadings(), true); + assertEquals(sheet.isDisplayFormulas(), false); + + sheet.setDisplayGridlines(false); + sheet.setDisplayRowColHeadings(false); + sheet.setDisplayFormulas(true); + + tempFile = File.createTempFile("display", "test.xls"); + stream = new FileOutputStream(tempFile); + wb.write(stream); + stream.close(); + + readStream = new FileInputStream(tempFile); + wb = new HSSFWorkbook(readStream); + sheet = wb.getSheetAt(0); + readStream.close(); + + + assertEquals(sheet.isDisplayGridlines(), false); + assertEquals(sheet.isDisplayRowColHeadings(), false); + assertEquals(sheet.isDisplayFormulas(), true); + } + public static void main(java.lang.String[] args) { junit.textui.TestRunner.run(TestHSSFSheet.class); - } - + } }