import java.util.Map;\r
\r
import org.apache.poi.ss.usermodel.*;\r
+import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold.RangeType;\r
+import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;\r
import org.apache.poi.xssf.usermodel.XSSFFontFormatting;\r
import org.apache.poi.xssf.model.StylesTable;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCfRule;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCfType;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STConditionalFormattingOperator;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDxf;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;\r
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;\r
\r
/**\r
* XSSF suport for Conditional Formatting rules\r
return new XSSFPatternFormatting(dxf.getFill());\r
}\r
\r
+ public XSSFIconMultiStateFormatting createMultiStateFormatting(IconSet iconSet) {\r
+ // Is it already there?\r
+ if (_cfRule.isSetIconSet() && _cfRule.getType() == STCfType.ICON_SET)\r
+ return getMultiStateFormatting();\r
+ \r
+ // Mark it as being an Icon Set\r
+ _cfRule.setType(STCfType.ICON_SET);\r
\r
- public IconMultiStateFormatting createMultiStateFormatting() {\r
- throw new IllegalArgumentException("Not implemented yet"); // TODO \r
+ // Ensure the right element\r
+ CTIconSet icons = null;\r
+ if (_cfRule.isSetIconSet()) {\r
+ icons = _cfRule.getIconSet();\r
+ } else {\r
+ icons = _cfRule.addNewIconSet();\r
+ }\r
+ // Set the type of the icon set\r
+ if (iconSet.name != null) {\r
+ STIconSetType.Enum xIconSet = STIconSetType.Enum.forString(iconSet.name);\r
+ icons.setIconSet(xIconSet);\r
+ }\r
+ \r
+ // Add a default set of thresholds\r
+ int jump = 100 / iconSet.num;\r
+ STCfvoType.Enum type = STCfvoType.Enum.forString(RangeType.PERCENT.name);\r
+ for (int i=0; i<iconSet.num; i++) {\r
+ CTCfvo cfvo = icons.addNewCfvo();\r
+ cfvo.setType(type);\r
+ cfvo.setVal(Integer.toString(i*jump));\r
+ }\r
+ \r
+ // Wrap and return\r
+ return new XSSFIconMultiStateFormatting(icons);\r
}\r
- public IconMultiStateFormatting getMultiStateFormatting() {\r
- throw new IllegalArgumentException("Not implemented yet"); // TODO \r
+ public XSSFIconMultiStateFormatting getMultiStateFormatting() {\r
+ if (_cfRule.isSetIconSet()) {\r
+ CTIconSet icons = _cfRule.getIconSet();\r
+ return new XSSFIconMultiStateFormatting(icons);\r
+ } else {\r
+ return null;\r
+ }\r
}\r
\r
/**\r
--- /dev/null
+/*\r
+ * ====================================================================\r
+ * Licensed to the Apache Software Foundation (ASF) under one or more\r
+ * contributor license agreements. See the NOTICE file distributed with\r
+ * this work for additional information regarding copyright ownership.\r
+ * The ASF licenses this file to You under the Apache License, Version 2.0\r
+ * (the "License"); you may not use this file except in compliance with\r
+ * the License. You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ====================================================================\r
+ */\r
+package org.apache.poi.xssf.usermodel;\r
+\r
+import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold;\r
+import org.apache.poi.ss.usermodel.IconMultiStateFormatting;\r
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIconSet;\r
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STIconSetType;\r
+\r
+/**\r
+ * High level representation for Icon / Multi-State Formatting \r
+ * component of Conditional Formatting settings\r
+ */\r
+public class XSSFIconMultiStateFormatting implements IconMultiStateFormatting {\r
+ CTIconSet _iconset;\r
+\r
+ /*package*/ XSSFIconMultiStateFormatting(CTIconSet iconset){\r
+ _iconset = iconset;\r
+ }\r
+\r
+ public IconSet getIconSet() {\r
+ return IconSet.valueOf(\r
+ _iconset.getIconSet().toString()\r
+ );\r
+ }\r
+ public void setIconSet(IconSet set) {\r
+ STIconSetType.Enum xIconSet = STIconSetType.Enum.forString(set.name);\r
+ _iconset.setIconSet(xIconSet);\r
+ }\r
+\r
+ public boolean isIconOnly() {\r
+ if (_iconset.isSetShowValue())\r
+ return !_iconset.getShowValue();\r
+ return false;\r
+ }\r
+ public void setIconOnly(boolean only) {\r
+ _iconset.setShowValue(!only);\r
+ }\r
+\r
+ public boolean isReversed() {\r
+ if (_iconset.isSetReverse())\r
+ return _iconset.getReverse();\r
+ return false;\r
+ }\r
+ public void setReversed(boolean reversed) {\r
+ _iconset.setReverse(reversed);\r
+ }\r
+\r
+ public XSSFConditionalFormattingThreshold[] getThresholds() {\r
+ // TODO Implement\r
+ return null;\r
+ }\r
+ public void setThresholds(ConditionalFormattingThreshold[] thresholds) {\r
+ // TODO Implement\r
+ }\r
+}\r
import org.apache.poi.ss.usermodel.ComparisonOperator;\r
import org.apache.poi.ss.usermodel.ConditionalFormatting;\r
import org.apache.poi.ss.usermodel.ConditionalFormattingRule;\r
-import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold.RangeType;\r
import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;\r
import org.apache.poi.ss.usermodel.SheetConditionalFormatting;\r
import org.apache.poi.ss.util.CellRangeAddress;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCfRule;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCfvo;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTConditionalFormatting;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIconSet;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCfType;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCfvoType;\r
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STConditionalFormattingOperator;\r
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STIconSetType;\r
\r
/**\r
* XSSF Conditional Formattings\r
public XSSFConditionalFormattingRule createConditionalFormattingRule(IconSet iconSet) {\r
XSSFConditionalFormattingRule rule = new XSSFConditionalFormattingRule(_sheet);\r
\r
- // Mark it as being an Icon Set\r
- CTCfRule cfRule = rule.getCTCfRule();\r
- cfRule.setType(STCfType.ICON_SET);\r
-\r
- // Set the type of the icon set\r
- CTIconSet icons = cfRule.addNewIconSet();\r
- if (iconSet.name != null) {\r
- STIconSetType.Enum xIconSet = STIconSetType.Enum.forString(iconSet.name);\r
- icons.setIconSet(xIconSet);\r
- }\r
- \r
- // Add a default set of thresholds\r
- int jump = 100 / iconSet.num;\r
- STCfvoType.Enum type = STCfvoType.Enum.forString(RangeType.PERCENT.name);\r
- for (int i=0; i<iconSet.num; i++) {\r
- CTCfvo cfvo = icons.addNewCfvo();\r
- cfvo.setType(type);\r
- cfvo.setVal(Integer.toString(i*jump));\r
- }\r
+ // Have it setup, with suitable defaults\r
+ rule.createMultiStateFormatting(iconSet);\r
\r
// All done!\r
return rule;\r