From b03f77865ddc2a42f5cb14a18216a504fba6cb62 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Fri, 17 Oct 2008 17:44:53 +0000 Subject: [PATCH] applied patches #46004 and #46006 submitted by Gisella Bronzetti git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@705684 13f79535-47bb-0310-9956-ffa450edef68 --- .../usermodel/examples/FitSheetToOnePage.java | 39 ++++-- .../usermodel/examples/HeadersAndFooters.java | 47 +++++++ .../usermodel/examples/HyperlinkExample.java | 95 +++++++++++++ .../usermodel/examples/SelectedSheet.java | 44 ++++++ .../poi/xssf/usermodel/XSSFHyperlink.java | 14 +- .../extensions/XSSFCellAlignment.java | 85 ++++++++++- .../usermodel/extensions/XSSFCellBorder.java | 69 +++++++-- .../usermodel/extensions/XSSFCellFill.java | 132 ++++++++++++------ 8 files changed, 454 insertions(+), 71 deletions(-) create mode 100755 src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java create mode 100755 src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java create mode 100755 src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java index b2186ba702..e7fb42b4b2 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java @@ -1,3 +1,19 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.xssf.usermodel.examples; import java.io.FileOutputStream; @@ -10,22 +26,21 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class FitSheetToOnePage { - public static void main(String[]args) throws Exception{ - Workbook wb = new XSSFWorkbook(); - Sheet sheet = wb.createSheet("format sheet"); - PrintSetup ps = sheet.getPrintSetup(); + public static void main(String[]args) throws Exception { + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet("format sheet"); + PrintSetup ps = sheet.getPrintSetup(); - sheet.setAutobreaks(true); + sheet.setAutobreaks(true); - ps.setFitHeight((short)1); - ps.setFitWidth((short)1); + ps.setFitHeight((short) 1); + ps.setFitWidth((short) 1); + // Create various cells and rows for spreadsheet. - // Create various cells and rows for spreadsheet. - - FileOutputStream fileOut = new FileOutputStream("fitSheetToOnePage.xlsx"); - wb.write(fileOut); - fileOut.close(); + FileOutputStream fileOut = new FileOutputStream("fitSheetToOnePage.xlsx"); + wb.write(fileOut); + fileOut.close(); } } diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java new file mode 100755 index 0000000000..8c69500e95 --- /dev/null +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java @@ -0,0 +1,47 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xssf.usermodel.examples; + +import java.io.FileOutputStream; + +import org.apache.poi.ss.usermodel.Footer; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +public class HeadersAndFooters { + + + public static void main(String[]args) throws Exception { + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet("format sheet"); + sheet.createRow(0).createCell(0).setCellValue(123); + + //set page numbers in the footer + Footer footer = sheet.getFooter(); + //&P == current page number + //&N == page numbers + footer.setRight("Page &P of &N"); + + // Create various cells and rows for spreadsheet. + + FileOutputStream fileOut = new FileOutputStream("pageNumerOnFooter.xlsx"); + wb.write(fileOut); + fileOut.close(); + + } +} diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java new file mode 100755 index 0000000000..71e871cdd4 --- /dev/null +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java @@ -0,0 +1,95 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xssf.usermodel.examples; + +import java.io.FileOutputStream; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.Hyperlink; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xssf.usermodel.IndexedColors; + +/** + * Demonstrates how to create hyperlinks. + */ +public class HyperlinkExample { + + + public static void main(String[]args) throws Exception{ + Workbook wb = new XSSFWorkbook(); + CreationHelper createHelper = wb.getCreationHelper(); + + //cell style for hyperlinks + //by default hypelrinks are blue and underlined + CellStyle hlink_style = wb.createCellStyle(); + Font hlink_font = wb.createFont(); + hlink_font.setUnderline(Font.U_SINGLE); + hlink_font.setColor(IndexedColors.BLUE.getIndex()); + hlink_style.setFont(hlink_font); + + Cell cell; + Sheet sheet = wb.createSheet("Hyperlinks"); + //URL + cell = sheet.createRow(0).createCell((short)0); + cell.setCellValue("URL Link"); + + Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL); + link.setAddress("http://poi.apache.org/"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + //link to a file in the current directory + cell = sheet.createRow(1).createCell((short)0); + cell.setCellValue("File Link"); + link = createHelper.createHyperlink(Hyperlink.LINK_FILE); + link.setAddress("link1.xls"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + //e-mail link + cell = sheet.createRow(2).createCell((short)0); + cell.setCellValue("Email Link"); + link = createHelper.createHyperlink(Hyperlink.LINK_EMAIL); + //note, if subject contains white spaces, make sure they are url-encoded + link.setAddress("mailto:poi@apache.org?subject=Hyperlinks"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + //link to a place in this workbook + + //create a target sheet and cell + Sheet sheet2 = wb.createSheet("Target Sheet"); + sheet2.createRow(0).createCell((short)0).setCellValue("Target Cell"); + + cell = sheet.createRow(3).createCell((short)0); + cell.setCellValue("Worksheet Link"); + Hyperlink link2 = createHelper.createHyperlink(Hyperlink.LINK_DOCUMENT); + link2.setAddress("'Target Sheet'!A1"); + cell.setHyperlink(link2); + cell.setCellStyle(hlink_style); + + FileOutputStream out = new FileOutputStream("hyperinks.xlsx"); + wb.write(out); + out.close(); + + } +} diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java new file mode 100755 index 0000000000..f79c4163da --- /dev/null +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java @@ -0,0 +1,44 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xssf.usermodel.examples; + +import java.io.FileOutputStream; + +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +public class SelectedSheet { + + public static void main(String[]args) throws Exception { + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet("row sheet"); + + Sheet sheet2 = wb.createSheet("another sheet"); + Sheet sheet3 = wb.createSheet(" sheet 3 "); + sheet3.setSelected(true); + wb.setActiveSheet(2); + + // Create various cells and rows for spreadsheet. + + FileOutputStream fileOut = new FileOutputStream("selectedSheet.xlsx"); + wb.write(fileOut); + fileOut.close(); + } + +} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java index 8040dfcf22..4ba42db8f4 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java @@ -124,13 +124,25 @@ public class XSSFHyperlink implements Hyperlink { public String getLabel() { return ctHyperlink.getDisplay(); } + public String getLocation() { + return ctHyperlink.getLocation(); + } public void setLabel(String label) { ctHyperlink.setDisplay(label); } + + public void setLocation(String location){ + ctHyperlink.setLocation(location); + } + public void setAddress(String address) { location = address; - } + //we must set location for internal hyperlinks + if(type == Hyperlink.LINK_DOCUMENT){ + setLocation(address); + } + } /** * Assigns this hyperlink to the given cell reference diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java index 5e448b6f0a..8b2ee74d0e 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java @@ -30,52 +30,129 @@ public class XSSFCellAlignment { private CTCellAlignment cellAlignement; + /** + * Creates a Cell Alignment from the supplied XML definition + * + * @param cellAlignment + */ public XSSFCellAlignment(CTCellAlignment cellAlignment) { this.cellAlignement = cellAlignment; } + /** + * Get the type of vertical alignment for the cell + * + * @return the type of aligment + * @see VerticalAlignment + */ public VerticalAlignment getVertical() { STVerticalAlignment.Enum align = cellAlignement.getVertical(); - if(align == null) align = STVerticalAlignment.BOTTOM; + if (align == null) align = STVerticalAlignment.BOTTOM; return VerticalAlignment.values()[align.intValue() - 1]; } - public void setVertical(VerticalAlignment vertical) { - cellAlignement.setVertical(STVerticalAlignment.Enum.forInt(vertical.ordinal() + 1)); + /** + * Set the type of vertical alignment for the cell + * + * @param align - the type of alignment + * @see VerticalAlignment + */ + public void setVertical(VerticalAlignment align) { + cellAlignement.setVertical(STVerticalAlignment.Enum.forInt(align.ordinal() + 1)); } + /** + * Get the type of horizontal alignment for the cell + * + * @return the type of aligment + * @see HorizontalAlignment + */ public HorizontalAlignment getHorizontal() { STHorizontalAlignment.Enum align = cellAlignement.getHorizontal(); - if(align == null) align = STHorizontalAlignment.GENERAL; + if (align == null) align = STHorizontalAlignment.GENERAL; return HorizontalAlignment.values()[align.intValue() - 1]; } + /** + * Set the type of horizontal alignment for the cell + * + * @param align - the type of alignment + * @see HorizontalAlignment + */ public void setHorizontal(HorizontalAlignment align) { cellAlignement.setHorizontal(STHorizontalAlignment.Enum.forInt(align.ordinal() + 1)); } + /** + * Get the number of spaces to indent the text in the cell + * + * @return indent - number of spaces + */ public long getIndent() { return cellAlignement.getIndent(); } + /** + * Set the number of spaces to indent the text in the cell + * + * @param indent - number of spaces + */ public void setIndent(long indent) { cellAlignement.setIndent(indent); } + /** + * Get the degree of rotation for the text in the cell + *

+ * Expressed in degrees. Values range from 0 to 180. The first letter of + * the text is considered the center-point of the arc. + *
+ * For 0 - 90, the value represents degrees above horizon. For 91-180 the degrees below the + * horizon is calculated as: + *
+ * [degrees below horizon] = 90 - textRotation. + *

+ * + * @return rotation degrees (between 0 and 180 degrees) + */ public long getTextRotation() { return cellAlignement.getTextRotation(); } + /** + * Set the degree of rotation for the text in the cell + *

+ * Expressed in degrees. Values range from 0 to 180. The first letter of + * the text is considered the center-point of the arc. + *
+ * For 0 - 90, the value represents degrees above horizon. For 91-180 the degrees below the + * horizon is calculated as: + *
+ * [degrees below horizon] = 90 - textRotation. + *

+ * + * @param rotation - the rotation degrees (between 0 and 180 degrees) + */ public void setTextRotation(long rotation) { cellAlignement.setTextRotation(rotation); } + /** + * Whether the text should be wrapped + * + * @return a boolean value indicating if the text in a cell should be line-wrapped within the cell. + */ public boolean getWrapText() { return cellAlignement.getWrapText(); } + /** + * Set whether the text should be wrapped + * + * @param wrapped a boolean value indicating if the text in a cell should be line-wrapped within the cell. + */ public void setWrapText(boolean wrapped) { cellAlignement.setWrapText(wrapped); } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java index cd61a4e5ac..0355aff69b 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java @@ -17,14 +17,16 @@ package org.apache.poi.xssf.usermodel.extensions; -import java.util.LinkedList; - +import org.apache.poi.xssf.usermodel.BorderStyle; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle; -import org.apache.poi.xssf.usermodel.BorderStyle; - +/** + * This element contains border formatting information, specifying border definition formats (left, right, top, bottom, diagonal) + * for cells in the workbook. + * Color is optional. + */ public class XSSFCellBorder { private CTBorder border; @@ -35,66 +37,103 @@ public class XSSFCellBorder { public XSSFCellBorder(CTBorder border) { this.border = border; } + /** * Creates a new, empty Cell Border, on the - * given Styles Table + * given Styles Table */ public XSSFCellBorder() { border = CTBorder.Factory.newInstance(); } + /** + * The enumeration value indicating the side being used for a cell border. + */ public static enum BorderSide { TOP, RIGHT, BOTTOM, LEFT } + /** + * Returns the underlying XML bean. + * + * @return CTBorder + */ public CTBorder getCTBorder() { return border; } + /** + * Get the type of border to use for the selected border + * + * @param side - - where to apply the color definition + * @return borderstyle - the type of border to use. default value is NONE if border style is not set. + * @see BorderStyle + */ public BorderStyle getBorderStyle(BorderSide side) { CTBorderPr ctBorder = getBorder(side); STBorderStyle.Enum border = ctBorder == null ? STBorderStyle.NONE : ctBorder.getStyle(); return BorderStyle.values()[border.intValue() - 1]; } + /** + * Set the type of border to use for the selected border + * + * @param side - - where to apply the color definition + * @param style - border style + * @see BorderStyle + */ public void setBorderStyle(BorderSide side, BorderStyle style) { getBorder(side, true).setStyle(STBorderStyle.Enum.forInt(style.ordinal() + 1)); } + /** + * Get the color to use for the selected border + * + * @param side - where to apply the color definition + * @return color - color to use as XSSFColor. null if color is not set + */ public XSSFColor getBorderColor(BorderSide side) { CTBorderPr borderPr = getBorder(side); return borderPr != null && borderPr.isSetColor() ? new XSSFColor(borderPr.getColor()) : null; } + /** + * Set the color to use for the selected border + * + * @param side - where to apply the color definition + * @param color - the color to use + */ public void setBorderColor(BorderSide side, XSSFColor color) { CTBorderPr borderPr = getBorder(side, true); - if(color == null) borderPr.unsetColor(); - else borderPr.setColor(color.getCTColor()); + if (color == null) borderPr.unsetColor(); + else + borderPr.setColor(color.getCTColor()); } private CTBorderPr getBorder(BorderSide side) { return getBorder(side, false); } + private CTBorderPr getBorder(BorderSide side, boolean ensure) { CTBorderPr borderPr; switch (side) { case TOP: borderPr = border.getTop(); - if(ensure && borderPr == null) borderPr = border.addNewTop(); + if (ensure && borderPr == null) borderPr = border.addNewTop(); break; case RIGHT: borderPr = border.getRight(); - if(ensure && borderPr == null) borderPr = border.addNewRight(); + if (ensure && borderPr == null) borderPr = border.addNewRight(); break; case BOTTOM: borderPr = border.getBottom(); - if(ensure && borderPr == null) borderPr = border.addNewBottom(); + if (ensure && borderPr == null) borderPr = border.addNewBottom(); break; case LEFT: borderPr = border.getLeft(); - if(ensure && borderPr == null) borderPr = border.addNewLeft(); + if (ensure && borderPr == null) borderPr = border.addNewLeft(); break; default: throw new IllegalArgumentException("No suitable side specified for the border"); @@ -103,14 +142,14 @@ public class XSSFCellBorder { } - public int hashCode(){ + public int hashCode() { return border.toString().hashCode(); } - public boolean equals(Object o){ - if(!(o instanceof XSSFCellBorder)) return false; + public boolean equals(Object o) { + if (!(o instanceof XSSFCellBorder)) return false; - XSSFCellBorder cf = (XSSFCellBorder)o; + XSSFCellBorder cf = (XSSFCellBorder) o; return border.toString().equals(cf.getCTBorder().toString()); } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java index 29a9d08654..58c26c5ff1 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java @@ -16,95 +16,149 @@ ==================================================================== */ package org.apache.poi.xssf.usermodel.extensions; -import java.util.List; - -import org.apache.poi.xssf.usermodel.IndexedColors; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType.Enum; +/** + * This element specifies fill formatting. + * A cell fill consists of a background color, foreground color, and pattern to be applied across the cell. + */ public final class XSSFCellFill { - - private CTFill _fill; - - public XSSFCellFill(CTFill fill) { - _fill = fill; - } - - public XSSFCellFill() { - _fill = CTFill.Factory.newInstance(); - } - - public XSSFColor getFillBackgroundColor() { + + private CTFill _fill; + + /** + * Creates a CellFill from the supplied parts + * + * @param fill - fill + */ + public XSSFCellFill(CTFill fill) { + _fill = fill; + } + + /** + * Creates an empty CellFill + */ + public XSSFCellFill() { + _fill = CTFill.Factory.newInstance(); + } + + /** + * Get the background fill color. + * + * @return fill color, null if color is not set + */ + public XSSFColor getFillBackgroundColor() { CTPatternFill ptrn = _fill.getPatternFill(); - if(ptrn == null) return null; + if (ptrn == null) return null; CTColor ctColor = ptrn.getBgColor(); - return ctColor == null ? null : new XSSFColor(ctColor); - } + return ctColor == null ? null : new XSSFColor(ctColor); + } + /** + * Set the background fill color represented as a indexed color value. + * + * @param index + */ public void setFillBackgroundColor(int index) { CTPatternFill ptrn = ensureCTPatternFill(); CTColor ctColor = ptrn.isSetBgColor() ? ptrn.getBgColor() : ptrn.addNewBgColor(); ctColor.setIndexed(index); } + /** + * Set the background fill color represented as a {@link XSSFColor} value. + * + * @param color + */ public void setFillBackgroundColor(XSSFColor color) { CTPatternFill ptrn = ensureCTPatternFill(); ptrn.setBgColor(color.getCTColor()); } + /** + * Get the foreground fill color. + * + * @return XSSFColor - foreground color. null if color is not set + */ public XSSFColor getFillForegroundColor() { CTPatternFill ptrn = _fill.getPatternFill(); - if(ptrn == null) return null; + if (ptrn == null) return null; CTColor ctColor = ptrn.getFgColor(); return ctColor == null ? null : new XSSFColor(ctColor); } + /** + * Set the foreground fill color as a indexed color value + * + * @param index - the color to use + */ public void setFillForegroundColor(int index) { CTPatternFill ptrn = ensureCTPatternFill(); CTColor ctColor = ptrn.isSetFgColor() ? ptrn.getFgColor() : ptrn.addNewFgColor(); ctColor.setIndexed(index); } + /** + * Set the foreground fill color represented as a {@link XSSFColor} value. + * + * @param color - the color to use + */ public void setFillForegroundColor(XSSFColor color) { CTPatternFill ptrn = ensureCTPatternFill(); ptrn.setFgColor(color.getCTColor()); } - public STPatternType.Enum getPatternType() { + /** + * get the fill pattern + * + * @return fill pattern type. null if fill pattern is not set + */ + public STPatternType.Enum getPatternType() { CTPatternFill ptrn = _fill.getPatternFill(); - return ptrn == null ? null : ptrn.getPatternType(); - } + return ptrn == null ? null : ptrn.getPatternType(); + } + /** + * set the fill pattern + * + * @param patternType fill pattern to use + */ public void setPatternType(STPatternType.Enum patternType) { CTPatternFill ptrn = ensureCTPatternFill(); ptrn.setPatternType(patternType); } - private CTPatternFill ensureCTPatternFill() { - CTPatternFill patternFill = _fill.getPatternFill(); - if (patternFill == null) { - patternFill = _fill.addNewPatternFill(); - } - return patternFill; - } - - public CTFill getCTFill() { - return _fill; - } - - public int hashCode(){ + private CTPatternFill ensureCTPatternFill() { + CTPatternFill patternFill = _fill.getPatternFill(); + if (patternFill == null) { + patternFill = _fill.addNewPatternFill(); + } + return patternFill; + } + + /** + * Returns the underlying XML bean. + * + * @return CTFill + */ + public CTFill getCTFill() { + return _fill; + } + + + public int hashCode() { return _fill.toString().hashCode(); } - public boolean equals(Object o){ - if(!(o instanceof XSSFCellFill)) return false; + public boolean equals(Object o) { + if (!(o instanceof XSSFCellFill)) return false; - XSSFCellFill cf = (XSSFCellFill)o; + XSSFCellFill cf = (XSSFCellFill) o; return _fill.toString().equals(cf.getCTFill().toString()); } } -- 2.39.5