blob: d5212e5b94efc63fc7230cb209ce5fe73766f828 [file] [log] [blame]
/*
* ====================================================================
* 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
*/
public interface IconMultiStateFormatting {
public enum IconSet {
/** Green Up / Yellow Side / Red Down arrows */
GYR_3_ARROW(0, 3, "3Arrows"),
/** Grey Up / Side / Down arrows */
GREY_3_ARROWS(1, 3, "3ArrowsGray"),
/** Green / Yellow / Red flags */
GYR_3_FLAGS(2, 3, "3Flags"),
/** 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 */
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 */
GYR_3_SHAPES(5, 3, "3Signs"),
/** Green Tick / Yellow ! / Red Cross on a circle background */
GYR_3_SYMBOLS_CIRCLE(6, 3, "3Symbols"),
/** Green Tick / Yellow ! / Red Cross (no background) */
GYR_3_SYMBOLS(7, 3, "3Symbols2"),
/** Green Up / Yellow NE / Yellow SE / Red Down arrows */
GYR_4_ARROWS(8, 4, "4Arrows"),
/** Grey Up / NE / SE / Down arrows */
GREY_4_ARROWS(9, 4, "4ArrowsGray"),
/** 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 */
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 */
public int id;
/** How many icons in the set */
public final int num;
/** 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
*/
IconSet getIconSet();
/**
* 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?
*/
boolean isIconOnly();
/**
* 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
*/
ConditionalFormattingThreshold[] getThresholds();
/**
* 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
*/
ConditionalFormattingThreshold createThreshold();
}