| /* |
| * ==================================================================== |
| * 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.ss.usermodel; |
| |
| |
| /** |
| * The Threshold / CFVO / Conditional Formatting Value Object. |
| * <p>This defines how to calculate the ranges for a conditional |
| * formatting rule, eg which values get a Green Traffic Light |
| * icon and which Yellow or Red.</p> |
| */ |
| public interface ConditionalFormattingThreshold { |
| public enum RangeType { |
| /** Number / Parameter */ |
| NUMBER(1, "num"), |
| /** The minimum value from the range */ |
| MIN(2, "min"), |
| /** The maximum value from the range */ |
| MAX(3, "max"), |
| /** Percent of the way from the mi to the max value in the range */ |
| PERCENT(4, "percent"), |
| /** The minimum value of the cell that is in X percentile of the range */ |
| PERCENTILE(5, "percentile"), |
| UNALLOCATED(6, null), |
| /** Formula result */ |
| FORMULA(7, "formula"); |
| |
| /** Numeric ID of the type */ |
| public final int id; |
| /** Name (system) of the type */ |
| public final String name; |
| |
| public String toString() { |
| return id + " - " + name; |
| } |
| |
| public static RangeType byId(int id) { |
| return values()[id-1]; // 1-based IDs |
| } |
| public static RangeType byName(String name) { |
| for (RangeType t : values()) { |
| if (t.name.equals(name)) return t; |
| } |
| return null; |
| } |
| |
| private RangeType(int id, String name) { |
| this.id = id; this.name = name; |
| } |
| } |
| |
| /** |
| * Get the Range Type used |
| */ |
| RangeType getRangeType(); |
| |
| /** |
| * Changes the Range Type used |
| * |
| * <p>If you change the range type, you need to |
| * ensure that the Formula and Value parameters |
| * are compatible with it before saving</p> |
| */ |
| void setRangeType(RangeType type); |
| |
| /** |
| * Formula to use to calculate the threshold, |
| * or <code>null</code> if no formula |
| */ |
| String getFormula(); |
| |
| /** |
| * Sets the formula used to calculate the threshold, |
| * or unsets it if <code>null</code> is given. |
| */ |
| void setFormula(String formula); |
| |
| /** |
| * Gets the value used for the threshold, or |
| * <code>null</code> if there isn't one. |
| */ |
| Double getValue(); |
| |
| /** |
| * Sets the value used for the threshold. |
| * <p>If the type is {@link RangeType#PERCENT} or |
| * {@link RangeType#PERCENTILE} it must be between 0 and 100. |
| * <p>If the type is {@link RangeType#MIN} or {@link RangeType#MAX} |
| * or {@link RangeType#FORMULA} it shouldn't be set. |
| * <p>Use <code>null</code> to unset |
| */ |
| void setValue(Double value); |
| } |