Author: nick
Date: Tue Jul 14 18:32:35 2015
New Revision: 1691047

URL: http://svn.apache.org/r1691047
Log:
Provide format-agnostic conditional formatting patter colour getters and setters

Modified:
    
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPatternFormatting.java
    poi/trunk/src/java/org/apache/poi/ss/usermodel/PatternFormatting.java
    
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPatternFormatting.java

Modified: 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java?rev=1691047&r1=1691046&r2=1691047&view=diff
==============================================================================
--- 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
 (original)
+++ 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
 Tue Jul 14 18:32:35 2015
@@ -135,13 +135,13 @@ public final class HSSFConditionalFormat
                if ( patternFormatting != null)
                {
                        cfRuleRecord.setPatternFormatting(patternFormatting);
-                       return new HSSFPatternFormatting(cfRuleRecord);
+                       return new HSSFPatternFormatting(cfRuleRecord, 
workbook);
                }
                else if( create )
                {
                        patternFormatting = new PatternFormatting();
                        cfRuleRecord.setPatternFormatting(patternFormatting);
-                       return new HSSFPatternFormatting(cfRuleRecord);
+                       return new HSSFPatternFormatting(cfRuleRecord, 
workbook);
                }
                else
                {

Modified: 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPatternFormatting.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPatternFormatting.java?rev=1691047&r1=1691046&r2=1691047&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPatternFormatting.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPatternFormatting.java 
Tue Jul 14 18:32:35 2015
@@ -19,17 +19,21 @@ package org.apache.poi.hssf.usermodel;
 
 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();
        }
@@ -39,7 +43,15 @@ public class HSSFPatternFormatting imple
                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()
@@ -63,7 +75,31 @@ public class HSSFPatternFormatting imple
                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)
         */

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/PatternFormatting.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/PatternFormatting.java?rev=1691047&r1=1691046&r2=1691047&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/PatternFormatting.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/PatternFormatting.java Tue 
Jul 14 18:32:35 2015
@@ -63,14 +63,16 @@ public interface PatternFormatting {
     public final static short     LEAST_DOTS          = 18 ;
 
     short getFillBackgroundColor();
-
     short getFillForegroundColor();
+    Color getFillBackgroundColorColor();
+    Color getFillForegroundColorColor();
 
     short getFillPattern();
 
     void setFillBackgroundColor(short bg);
-
     void setFillForegroundColor(short fg);
+    void setFillBackgroundColor(Color bg);
+    void setFillForegroundColor(Color fg);
 
     void setFillPattern(short fp);
 }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPatternFormatting.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPatternFormatting.java?rev=1691047&r1=1691046&r2=1691047&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPatternFormatting.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPatternFormatting.java
 Tue Jul 14 18:32:35 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.poi.xssf.usermodel;
 
+import org.apache.poi.ss.usermodel.Color;
 import org.apache.poi.ss.usermodel.PatternFormatting;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill;
@@ -34,37 +35,65 @@ public class XSSFPatternFormatting imple
         _fill = fill;
     }
 
-    public short getFillBackgroundColor(){
-        if(!_fill.isSetPatternFill()) return 0;
-
-        return (short)_fill.getPatternFill().getBgColor().getIndexed();
+    public XSSFColor getFillBackgroundColorColor() {
+        if(!_fill.isSetPatternFill()) return null;
+        return new XSSFColor(_fill.getPatternFill().getBgColor());
     }
-
-    public short getFillForegroundColor(){
+    public XSSFColor getFillForegroundColorColor() {
         if(!_fill.isSetPatternFill() || ! 
_fill.getPatternFill().isSetFgColor())
-            return 0;
-
-        return (short)_fill.getPatternFill().getFgColor().getIndexed();
+            return null;
+        return new XSSFColor(_fill.getPatternFill().getFgColor());
     }
 
-    public short getFillPattern(){
+    public short getFillPattern() {
         if(!_fill.isSetPatternFill() || 
!_fill.getPatternFill().isSetPatternType()) return NO_FILL;
 
         return (short)(_fill.getPatternFill().getPatternType().intValue() - 1);
      }
 
-    public void setFillBackgroundColor(short bg){
-        CTPatternFill ptrn = _fill.isSetPatternFill() ? _fill.getPatternFill() 
: _fill.addNewPatternFill();
+    public short getFillBackgroundColor() {
+        XSSFColor color = getFillBackgroundColorColor();
+        if (color == null) return 0;
+        return color.getIndexed();
+    }
+    public short getFillForegroundColor() {
+        XSSFColor color = getFillForegroundColorColor();
+        if (color == null) return 0;
+        return color.getIndexed();
+    }
+
+    public void setFillBackgroundColor(Color bg) {
+        if (bg != null && !(bg instanceof XSSFColor)) {
+            throw new IllegalArgumentException("Only XSSFColor objects are 
supported");
+        }
+        XSSFColor xcolor = (XSSFColor)bg;
+        setFillBackgroundColor(xcolor.getCTColor());
+    }
+    public void setFillBackgroundColor(short bg) {
         CTColor bgColor = CTColor.Factory.newInstance();
         bgColor.setIndexed(bg);
-        ptrn.setBgColor(bgColor);
+        setFillBackgroundColor(bgColor);
     }
-
-    public void setFillForegroundColor(short fg){
+    public void setFillBackgroundColor(CTColor color) {
         CTPatternFill ptrn = _fill.isSetPatternFill() ? _fill.getPatternFill() 
: _fill.addNewPatternFill();
+        ptrn.setBgColor(color);
+    }
+    
+    public void setFillForegroundColor(Color fg) {
+        if (fg != null && !(fg instanceof XSSFColor)) {
+            throw new IllegalArgumentException("Only XSSFColor objects are 
supported");
+        }
+        XSSFColor xcolor = (XSSFColor)fg;
+        setFillForegroundColor(xcolor.getCTColor());
+    }
+    public void setFillForegroundColor(short fg) {
         CTColor fgColor = CTColor.Factory.newInstance();
         fgColor.setIndexed(fg);
-        ptrn.setFgColor(fgColor);
+        setFillForegroundColor(fgColor);
+    }
+    public void setFillForegroundColor(CTColor color) {
+        CTPatternFill ptrn = _fill.isSetPatternFill() ? _fill.getPatternFill() 
: _fill.addNewPatternFill();
+        ptrn.setFgColor(color);
     }
 
     public void setFillPattern(short fp){



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to