return multistate;
}
+ public boolean containsColorGradientBlock() {
+ return (color_gradient != null);
+ }
+ public ColorGradientFormatting getColorGradientFormatting() {
+ return color_gradient;
+ }
+ public ColorGradientFormatting createColorGradientFormatting() {
+ if (color_gradient != null) return color_gradient;
+
+ // Convert, setup and return
+ setConditionType(CONDITION_TYPE_COLOR_SCALE);
+ color_gradient = new ColorGradientFormatting();
+ return color_gradient;
+ }
+
/**
* get the stack of the scale expression as a list
*
in.readFully(colors);
}
+ public int getNumControlPoints() {
+ return thresholds.length;
+ }
+ public void setNumControlPoints(int num) {
+ if (num != thresholds.length) {
+ thresholds = new Threshold[num];
+ // TODO Colors
+ }
+ }
+
public Threshold[] getThresholds() {
return thresholds;
}
--- /dev/null
+/* ====================================================================
+ 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.hssf.usermodel;
+
+import org.apache.poi.hssf.record.CFRule12Record;
+import org.apache.poi.hssf.record.cf.ColorGradientFormatting;
+import org.apache.poi.hssf.record.cf.Threshold;
+import org.apache.poi.ss.usermodel.Color;
+import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold;
+
+/**
+ * High level representation for Color Scale / Color Gradient
+ * Formatting component of Conditional Formatting settings
+ */
+public final class HSSFColorScaleFormatting implements org.apache.poi.ss.usermodel.ColorScaleFormatting {
+ private final HSSFSheet sheet;
+ private final CFRule12Record cfRule12Record;
+ private final ColorGradientFormatting colorFormatting;
+
+ protected HSSFColorScaleFormatting(CFRule12Record cfRule12Record, HSSFSheet sheet) {
+ this.sheet = sheet;
+ this.cfRule12Record = cfRule12Record;
+ this.colorFormatting = this.cfRule12Record.getColorGradientFormatting();
+ }
+
+ public int getNumControlPoints() {
+ return colorFormatting.getNumControlPoints();
+ }
+ public void setNumControlPoints(int num) {
+ colorFormatting.setNumControlPoints(num);
+ }
+
+ public Color[] getColors() {
+ return null; // TODO
+ }
+ public void setColors(Color[] colors) {
+ // TODO
+ }
+
+ public HSSFConditionalFormattingThreshold[] getThresholds() {
+ Threshold[] t = colorFormatting.getThresholds();
+ HSSFConditionalFormattingThreshold[] ht = new HSSFConditionalFormattingThreshold[t.length];
+ for (int i=0; i<t.length; i++) {
+ ht[i] = new HSSFConditionalFormattingThreshold(t[i], sheet);
+ }
+ return ht;
+ }
+
+ public void setThresholds(ConditionalFormattingThreshold[] thresholds) {
+ Threshold[] t = new Threshold[thresholds.length];
+ for (int i=0; i<t.length; i++) {
+ t[i] = ((HSSFConditionalFormattingThreshold)thresholds[i]).getThreshold();
+ }
+ colorFormatting.setThresholds(t);
+ }
+
+ public HSSFConditionalFormattingThreshold createThreshold() {
+ return new HSSFConditionalFormattingThreshold(new Threshold(), sheet);
+ }
+}
import org.apache.poi.hssf.record.CFRuleBase.ComparisonOperator;
import org.apache.poi.hssf.record.CFRuleRecord;
import org.apache.poi.hssf.record.cf.BorderFormatting;
+import org.apache.poi.hssf.record.cf.ColorGradientFormatting;
import org.apache.poi.hssf.record.cf.FontFormatting;
import org.apache.poi.hssf.record.cf.IconMultiStateFormatting;
import org.apache.poi.hssf.record.cf.PatternFormatting;
cfRuleRecord = pRuleRecord;
}
- CFRuleBase getCfRuleRecord()
- {
+ CFRuleBase getCfRuleRecord() {
return cfRuleRecord;
}
+ private CFRule12Record getCFRule12Record(boolean create) {
+ if (cfRuleRecord instanceof CFRule12Record) {
+ // Good
+ } else {
+ if (create) throw new IllegalArgumentException("Can't convert a CF into a CF12 record");
+ return null;
+ }
+ return (CFRule12Record)cfRuleRecord;
+ }
private HSSFFontFormatting getFontFormatting(boolean create)
{
}
private HSSFIconMultiStateFormatting getMultiStateFormatting(boolean create) {
- if (cfRuleRecord instanceof CFRule12Record) {
- // Good
- } else {
- if (create) throw new IllegalArgumentException("Can't convert a CF into a CF12 record");
- return null;
- }
- CFRule12Record cfRule12Record = (CFRule12Record)cfRuleRecord;
+ CFRule12Record cfRule12Record = getCFRule12Record(create);
IconMultiStateFormatting iconFormatting = cfRule12Record.getMultiStateFormatting();
if (iconFormatting != null)
{
return null;
}
}
-
/**
* @return icon / multi-state formatting object if defined, <code>null</code> otherwise
*/
public HSSFIconMultiStateFormatting getMultiStateFormatting() {
return getMultiStateFormatting(false);
}
-
/**
* create a new icon / multi-state formatting object if it does not exist,
* otherwise just return the existing object.
return getMultiStateFormatting(true);
}
+ private HSSFColorScaleFormatting getColorScaleFormatting(boolean create) {
+ CFRule12Record cfRule12Record = getCFRule12Record(create);
+ ColorGradientFormatting colorFormatting = cfRule12Record.getColorGradientFormatting();
+ if (colorFormatting != null)
+ {
+ return new HSSFColorScaleFormatting(cfRule12Record, sheet);
+ }
+ else if( create )
+ {
+ colorFormatting = cfRule12Record.createColorGradientFormatting();
+ return new HSSFColorScaleFormatting(cfRule12Record, sheet);
+ }
+ else
+ {
+ return null;
+ }
+ }
+ /**
+ * @return color scale / gradient formatting object if defined, <code>null</code> otherwise
+ */
+ public HSSFColorScaleFormatting getColorScaleFormatting() {
+ return getColorScaleFormatting(false);
+ }
+ /**
+ * create a new color scale / gradient formatting object if it does not exist,
+ * otherwise just return the existing object.
+ */
+ public HSSFColorScaleFormatting createColorScaleFormatting() {
+ return getColorScaleFormatting(true);
+ }
+
/**
* @return - the conditiontype for the cfrule
*/