import org.apache.poi.hssf.record.CFRuleBase;
import org.apache.poi.hssf.record.cf.PatternFormatting;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.Color;
/**
* High level representation for Conditional Formatting settings
*/
public class HSSFPatternFormatting implements org.apache.poi.ss.usermodel.PatternFormatting
{
+ private final HSSFWorkbook workbook;
private final CFRuleBase cfRuleRecord;
private final PatternFormatting patternFormatting;
- protected HSSFPatternFormatting(CFRuleBase cfRuleRecord)
+ protected HSSFPatternFormatting(CFRuleBase cfRuleRecord, HSSFWorkbook workbook)
{
+ this.workbook = workbook;
this.cfRuleRecord = cfRuleRecord;
this.patternFormatting = cfRuleRecord.getPatternFormatting();
}
return patternFormatting;
}
- /**
+ public HSSFColor getFillBackgroundColorColor() {
+ return workbook.getCustomPalette().getColor(getFillBackgroundColor());
+ }
+
+ public HSSFColor getFillForegroundColorColor() {
+ return workbook.getCustomPalette().getColor(getFillForegroundColor());
+ }
+
+ /**
* @see org.apache.poi.hssf.record.cf.PatternFormatting#getFillBackgroundColor()
*/
public short getFillBackgroundColor()
return (short)patternFormatting.getFillPattern();
}
- /**
+ public void setFillBackgroundColor(Color bg) {
+ if (bg != null && !(bg instanceof HSSFColor)) {
+ throw new IllegalArgumentException("Only HSSFColor objects are supported");
+ }
+ HSSFColor hcolor = (HSSFColor)bg;
+ if (hcolor == null) {
+ setFillBackgroundColor((short)0);
+ } else {
+ setFillBackgroundColor(hcolor.getIndex());
+ }
+ }
+
+ public void setFillForegroundColor(Color fg) {
+ if (fg != null && !(fg instanceof HSSFColor)) {
+ throw new IllegalArgumentException("Only HSSFColor objects are supported");
+ }
+ HSSFColor hcolor = (HSSFColor)fg;
+ if (hcolor == null) {
+ setFillForegroundColor((short)0);
+ } else {
+ setFillForegroundColor(hcolor.getIndex());
+ }
+ }
+
+ /**
* @param bg
* @see org.apache.poi.hssf.record.cf.PatternFormatting#setFillBackgroundColor(int)
*/
*/\r
package org.apache.poi.xssf.usermodel;\r
\r
+import org.apache.poi.ss.usermodel.Color;\r
import org.apache.poi.ss.usermodel.PatternFormatting;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill;\r
_fill = fill;\r
}\r
\r
- public short getFillBackgroundColor(){\r
- if(!_fill.isSetPatternFill()) return 0;\r
-\r
- return (short)_fill.getPatternFill().getBgColor().getIndexed();\r
+ public XSSFColor getFillBackgroundColorColor() {\r
+ if(!_fill.isSetPatternFill()) return null;\r
+ return new XSSFColor(_fill.getPatternFill().getBgColor());\r
}\r
-\r
- public short getFillForegroundColor(){\r
+ public XSSFColor getFillForegroundColorColor() {\r
if(!_fill.isSetPatternFill() || ! _fill.getPatternFill().isSetFgColor())\r
- return 0;\r
-\r
- return (short)_fill.getPatternFill().getFgColor().getIndexed();\r
+ return null;\r
+ return new XSSFColor(_fill.getPatternFill().getFgColor());\r
}\r
\r
- public short getFillPattern(){\r
+ public short getFillPattern() {\r
if(!_fill.isSetPatternFill() || !_fill.getPatternFill().isSetPatternType()) return NO_FILL;\r
\r
return (short)(_fill.getPatternFill().getPatternType().intValue() - 1);\r
}\r
\r
- public void setFillBackgroundColor(short bg){\r
- CTPatternFill ptrn = _fill.isSetPatternFill() ? _fill.getPatternFill() : _fill.addNewPatternFill();\r
+ public short getFillBackgroundColor() {\r
+ XSSFColor color = getFillBackgroundColorColor();\r
+ if (color == null) return 0;\r
+ return color.getIndexed();\r
+ }\r
+ public short getFillForegroundColor() {\r
+ XSSFColor color = getFillForegroundColorColor();\r
+ if (color == null) return 0;\r
+ return color.getIndexed();\r
+ }\r
+\r
+ public void setFillBackgroundColor(Color bg) {\r
+ if (bg != null && !(bg instanceof XSSFColor)) {\r
+ throw new IllegalArgumentException("Only XSSFColor objects are supported");\r
+ }\r
+ XSSFColor xcolor = (XSSFColor)bg;\r
+ setFillBackgroundColor(xcolor.getCTColor());\r
+ }\r
+ public void setFillBackgroundColor(short bg) {\r
CTColor bgColor = CTColor.Factory.newInstance();\r
bgColor.setIndexed(bg);\r
- ptrn.setBgColor(bgColor);\r
+ setFillBackgroundColor(bgColor);\r
}\r
-\r
- public void setFillForegroundColor(short fg){\r
+ public void setFillBackgroundColor(CTColor color) {\r
CTPatternFill ptrn = _fill.isSetPatternFill() ? _fill.getPatternFill() : _fill.addNewPatternFill();\r
+ ptrn.setBgColor(color);\r
+ }\r
+ \r
+ public void setFillForegroundColor(Color fg) {\r
+ if (fg != null && !(fg instanceof XSSFColor)) {\r
+ throw new IllegalArgumentException("Only XSSFColor objects are supported");\r
+ }\r
+ XSSFColor xcolor = (XSSFColor)fg;\r
+ setFillForegroundColor(xcolor.getCTColor());\r
+ }\r
+ public void setFillForegroundColor(short fg) {\r
CTColor fgColor = CTColor.Factory.newInstance();\r
fgColor.setIndexed(fg);\r
- ptrn.setFgColor(fgColor);\r
+ setFillForegroundColor(fgColor);\r
+ }\r
+ public void setFillForegroundColor(CTColor color) {\r
+ CTPatternFill ptrn = _fill.isSetPatternFill() ? _fill.getPatternFill() : _fill.addNewPatternFill();\r
+ ptrn.setFgColor(color);\r
}\r
\r
public void setFillPattern(short fp){\r