/*
 *  ====================================================================
 *    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;

High level representation for the Icon / Multi-State Formatting component of Conditional Formatting settings
/** * High level representation for the Icon / Multi-State Formatting * component of Conditional Formatting settings */
public interface IconMultiStateFormatting { public enum IconSet {
Green Up / Yellow Side / Red Down arrows
/** Green Up / Yellow Side / Red Down arrows */
GYR_3_ARROW(0, 3, "3Arrows"),
Grey Up / Side / Down arrows
/** Grey Up / Side / Down arrows */
GREY_3_ARROWS(1, 3, "3ArrowsGray"),
Green / Yellow / Red flags
/** Green / Yellow / Red flags */
GYR_3_FLAGS(2, 3, "3Flags"),
Green / Yellow / Red traffic lights (no background). Default
/** Green / Yellow / Red traffic lights (no background). Default */
GYR_3_TRAFFIC_LIGHTS(3, 3, "3TrafficLights1"),
Green / Yellow / Red traffic lights on a black square background. Note, MS-XLS docs v20141018 say this is id=5 but seems to be id=4
/** Green / Yellow / Red traffic lights on a black square background. * Note, MS-XLS docs v20141018 say this is id=5 but seems to be id=4 */
GYR_3_TRAFFIC_LIGHTS_BOX(4, 3, "3TrafficLights2"),
Green Circle / Yellow Triangle / Red Diamond. Note, MS-XLS docs v20141018 say this is id=4 but seems to be id=5
/** Green Circle / Yellow Triangle / Red Diamond. * Note, MS-XLS docs v20141018 say this is id=4 but seems to be id=5 */
GYR_3_SHAPES(5, 3, "3Signs"),
Green Tick / Yellow ! / Red Cross on a circle background
/** Green Tick / Yellow ! / Red Cross on a circle background */
GYR_3_SYMBOLS_CIRCLE(6, 3, "3Symbols"),
Green Tick / Yellow ! / Red Cross (no background)
/** Green Tick / Yellow ! / Red Cross (no background) */
GYR_3_SYMBOLS(7, 3, "3Symbols2"),
Green Up / Yellow NE / Yellow SE / Red Down arrows
/** Green Up / Yellow NE / Yellow SE / Red Down arrows */
GYR_4_ARROWS(8, 4, "4Arrows"),
Grey Up / NE / SE / Down arrows
/** Grey Up / NE / SE / Down arrows */
GREY_4_ARROWS(9, 4, "4ArrowsGray"),
Red / Light Red / Grey / Black traffic lights
/** Red / Light Red / Grey / Black traffic lights */
RB_4_TRAFFIC_LIGHTS(0xA, 4, "4RedToBlack"), RATINGS_4(0xB, 4, "4Rating"),
Green / Yellow / Red / Black traffic lights
/** Green / Yellow / Red / Black traffic lights */
GYRB_4_TRAFFIC_LIGHTS(0xC, 4, "4TrafficLights"), GYYYR_5_ARROWS(0xD, 5, "5Arrows"), GREY_5_ARROWS(0xE, 5, "5ArrowsGray"), RATINGS_5(0xF, 5, "5Rating"), QUARTERS_5(0x10, 5, "5Quarters"); protected static final IconSet DEFAULT_ICONSET = IconSet.GYR_3_TRAFFIC_LIGHTS;
Numeric ID of the icon set
/** Numeric ID of the icon set */
public final int id;
How many icons in the set
/** How many icons in the set */
public final int num;
Name (system) of the set
/** Name (system) of the set */
public final String name; public String toString() { return id + " - " + name; } public static IconSet byId(int id) { return values()[id]; } public static IconSet byName(String name) { for (IconSet set : values()) { if (set.name.equals(name)) return set; } return null; } private IconSet(int id, int num, String name) { this.id = id; this.num = num; this.name = name; } }
Get the Icon Set used
/** * Get the Icon Set used */
IconSet getIconSet();
Changes the Icon Set used

If the new Icon Set has a different number of icons to the old one, you must update the thresholds before saving!

/** * Changes the Icon Set used * * <p>If the new Icon Set has a different number of * icons to the old one, you <em>must</em> update the * thresholds before saving!</p> */
void setIconSet(IconSet set);
Should Icon + Value be displayed, or only the Icon?
/** * Should Icon + Value be displayed, or only the Icon? */
boolean isIconOnly();
Control if only the Icon is shown, or Icon + Value
/** * Control if only the Icon is shown, or Icon + Value */
void setIconOnly(boolean only); boolean isReversed(); void setReversed(boolean reversed);
Gets the list of thresholds
/** * Gets the list of thresholds */
ConditionalFormattingThreshold[] getThresholds();
Sets the of thresholds. The number must match IconSet.num for the current getIconSet()
/** * Sets the of thresholds. The number must match * {@link IconSet#num} for the current {@link #getIconSet()} */
void setThresholds(ConditionalFormattingThreshold[] thresholds);
Creates a new, empty Threshold
/** * Creates a new, empty Threshold */
ConditionalFormattingThreshold createThreshold(); }