if ( fontFormatting != null)
{
cfRuleRecord.setFontFormatting(fontFormatting);
- return new HSSFFontFormatting(cfRuleRecord);
+ return new HSSFFontFormatting(cfRuleRecord, workbook);
}
else if( create )
{
fontFormatting = new FontFormatting();
cfRuleRecord.setFontFormatting(fontFormatting);
- return new HSSFFontFormatting(cfRuleRecord);
+ return new HSSFFontFormatting(cfRuleRecord, workbook);
}
else
{
import org.apache.poi.hssf.record.CFRuleBase;
import org.apache.poi.hssf.record.cf.FontFormatting;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.Color;
/**
* High level representation for Font Formatting component
* of Conditional Formatting settings
public final static byte U_DOUBLE_ACCOUNTING = FontFormatting.U_DOUBLE_ACCOUNTING;
private final FontFormatting fontFormatting;
+ private final HSSFWorkbook workbook;
- protected HSSFFontFormatting(CFRuleBase cfRuleRecord)
+ protected HSSFFontFormatting(CFRuleBase cfRuleRecord, HSSFWorkbook workbook)
{
this.fontFormatting = cfRuleRecord.getFontFormatting();
+ this.workbook = workbook;
}
protected FontFormatting getFontFormattingBlock()
return fontFormatting.getFontColorIndex();
}
- /**
+ public HSSFColor getFontColor() {
+ return workbook.getCustomPalette().getColor(
+ getFontColorIndex()
+ );
+ }
+
+ public void setFontColor(Color color) {
+ if (color != null && !(color instanceof HSSFColor)) {
+ throw new IllegalArgumentException("Only HSSFColor objects are supported");
+ }
+
+ HSSFColor hcolor = (HSSFColor)color;
+ if (hcolor == null) {
+ fontFormatting.setFontColorIndex((short)0);
+ } else {
+ fontFormatting.setFontColorIndex(hcolor.getIndex());
+ }
+ }
+
+ /**
* gets the height of the font in 1/20th point units
*
* @return fontheight (in points/20); or -1 if not modified
void setEscapementType(short escapementType);\r
\r
/**\r
- * @return font color index\r
+ * @return font colour index, or 0 if not indexed (XSSF only)\r
*/\r
short getFontColorIndex();\r
\r
-\r
/**\r
- * @param color font color index\r
+ * Sets the indexed colour to use\r
+ * @param color font colour index\r
*/\r
void setFontColorIndex(short color);\r
+ \r
+ /**\r
+ * @return The colour of the font, or null if no colour applied\r
+ */\r
+ Color getFontColor();\r
+ \r
+ /**\r
+ * Sets the colour to use\r
+ * @param color font colour to use\r
+ */\r
+ void setFontColor(Color color);\r
\r
/**\r
* gets the height of the font in 1/20th point units\r
return (short)idx;\r
}\r
\r
-\r
/**\r
* @param color font color index\r
*/\r
}\r
}\r
\r
- /**\r
- *\r
- * @return xssf color wrapper or null if color info is missing\r
- */\r
- public XSSFColor getXSSFColor(){\r
+ public XSSFColor getFontColor() {\r
if(_font.sizeOfColorArray() == 0) return null;\r
\r
return new XSSFColor(_font.getColorArray(0));\r
}\r
\r
+ public void setFontColor(Color color) {\r
+ if (color != null && !(color instanceof XSSFColor)) {\r
+ throw new IllegalArgumentException("Only XSSFColor objects are supported");\r
+ }\r
+ \r
+ XSSFColor xcolor = (XSSFColor)color;\r
+ if (xcolor == null) {\r
+ _font.getColorList().clear();\r
+ } else {\r
+ _font.setColorArray(0, xcolor.getCTColor());\r
+ }\r
+ }\r
+\r
+ /**\r
+ * @deprecated use {@link #getFontColor()}\r
+ */\r
+ public XSSFColor getXSSFColor(){\r
+ return getFontColor();\r
+ }\r
+\r
/**\r
* gets the height of the font in 1/20th point units\r
*\r
*/\r
public class XSSFSheetConditionalFormatting implements SheetConditionalFormatting {\r
/** Office 2010 Conditional Formatting extensions namespace */\r
- protected static final CF_EXT_2009_NS_X14 = "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main";\r
+ protected static final String CF_EXT_2009_NS_X14 = "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main";\r
\r
private final XSSFSheet _sheet;\r
\r