Author: nick Date: Sun Jul 19 22:35:37 2015 New Revision: 1691860 URL: http://svn.apache.org/r1691860 Log: #58130 Enable CF ColorScale support on the rule, and begin testing
Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFConditionalFormattingRule.java poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java?rev=1691860&r1=1691859&r2=1691860&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java Sun Jul 19 22:35:37 2015 @@ -84,6 +84,11 @@ public interface ConditionalFormattingRu IconMultiStateFormatting getMultiStateFormatting(); /** + * @return color scale / color grate formatting object if defined, <code>null</code> otherwise + */ + ColorScaleFormatting getColorScaleFormatting(); + + /** * Type of conditional formatting rule. * <p> * MUST be one of the IDs of a {@link ConditionType} Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFConditionalFormattingRule.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFConditionalFormattingRule.java?rev=1691860&r1=1691859&r2=1691860&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFConditionalFormattingRule.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFConditionalFormattingRule.java Sun Jul 19 22:35:37 2015 @@ -60,8 +60,6 @@ public class XSSFConditionalFormattingRu typeLookup.put(STCfType.ABOVE_AVERAGE, ConditionType.FILTER); } - // TODO Support types beyond CELL_VALUE_IS and FORMULA - /*package*/ XSSFConditionalFormattingRule(XSSFSheet sh){ _cfRule = CTCfRule.Factory.newInstance(); _sh = sh; @@ -218,8 +216,39 @@ public class XSSFConditionalFormattingRu } public XSSFColorScaleFormatting createColorScaleFormatting() { - // TODO Implement - return null; + // Is it already there? + if (_cfRule.isSetColorScale() && _cfRule.getType() == STCfType.COLOR_SCALE) + return getColorScaleFormatting(); + + // Mark it as being a Color Scale + _cfRule.setType(STCfType.COLOR_SCALE); + + // Ensure the right element + CTColorScale scale = null; + if (_cfRule.isSetColorScale()) { + scale = _cfRule.getColorScale(); + } else { + scale = _cfRule.addNewColorScale(); + } + + // Add a default set of thresholds and colors + if (scale.sizeOfCfvoArray() == 0) { + CTCfvo cfvo; + cfvo = scale.addNewCfvo(); + cfvo.setType(STCfvoType.Enum.forString(RangeType.MIN.name)); + cfvo = scale.addNewCfvo(); + cfvo.setType(STCfvoType.Enum.forString(RangeType.PERCENTILE.name)); + cfvo.setVal("50"); + cfvo = scale.addNewCfvo(); + cfvo.setType(STCfvoType.Enum.forString(RangeType.MAX.name)); + + for (int i=0; i<3; i++) { + scale.addNewColor(); + } + } + + // Wrap and return + return new XSSFColorScaleFormatting(scale); } public XSSFColorScaleFormatting getColorScaleFormatting() { if (_cfRule.isSetColorScale()) { Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java?rev=1691860&r1=1691859&r2=1691860&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java Sun Jul 19 22:35:37 2015 @@ -773,6 +773,7 @@ public abstract class BaseTestConditiona // Mixed icons - Column U // TODO Support EXT formattings } + private void assertIconSetPercentages(ConditionalFormatting cf, IconSet iconset, Double...vals) { assertEquals(1, cf.getNumberOfRules()); ConditionalFormattingRule cr = cf.getRule(0); @@ -812,8 +813,9 @@ public abstract class BaseTestConditiona assertEquals(null, cr.getFormula1()); assertEquals(null, cr.getFormula2()); - // TODO Implement -/* +// TODO Finish HSSF +if (cr instanceof HSSFConditionalFormattingRule) return; + ColorScaleFormatting color = cr.getColorScaleFormatting(); assertNotNull(color); assertNotNull(color.getColors()); @@ -831,18 +833,16 @@ public abstract class BaseTestConditiona } else if (i == colors.length-1) { assertEquals(RangeType.MAX, th.getRangeType()); } else { - assertEquals(RangeType.PERCENT, th.getRangeType()); - assertEquals(steps*i, th.getValue()); + assertEquals(RangeType.PERCENTILE, th.getRangeType()); + assertEquals(steps*i, th.getValue().intValue()); } assertEquals(null, th.getFormula()); } // Colors should match for (int i=0; i<colors.length; i++) { - Color c = color.getColors()[i]; - assertEquals(colors[i], c.toString()); + assertColour(colors[i], color.getColors()[i]); } -*/ } public void testCreateFontFormatting() { @@ -1068,6 +1068,13 @@ public abstract class BaseTestConditiona assertEquals(null, iconFmt.getThresholds()[3].getValue()); } + public void testCreateColorScaleFormatting() { + // TODO Implement then test + } + public void testCreateDataBarFormatting() { + // TODO Implement then test + } + public void testBug55380() { Workbook wb = _testDataProvider.createWorkbook(); Sheet sheet = wb.createSheet(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org