1 package org.opentrafficsim.swing.gui; 2 3 /** 4 * This interface allows on screen items to <b>not</b> obtain colors and/or the font from an {@code Appearance}. This can be 5 * useful for items where considering only a background and a foreground color is not sufficient, possibly creating unreadable 6 * or otherwise unpleasant on screen items.<br> 7 * <br> 8 * The default implementation of the methods in this interface return {@code false}, meaning the {@code Appearance} is 9 * completely ignored. In order to ignore it only partially, some methods should be overridden to return true. An example of 10 * this is given below, which will only allow the font of the {@code Appearance}. It also shows a convenient way to implement 11 * this interface when using default on screen items using a local class. 12 * 13 * <pre> 14 * class AppearanceControlComboBox<T> extends JComboBox<T> implements AppearanceControl 15 * { 16 * public boolean isFont() 17 * { 18 * return true; 19 * } 20 * } 21 * 22 * JComboBox<String> comboBox = new AppearanceControlComboBox<>(); 23 * </pre> 24 * 25 * Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br> 26 * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>. 27 * <p> 28 * @version $Revision$, $LastChangedDate$, by $Author$, initial version 6 feb. 2018 <br> 29 * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a> 30 * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a> 31 * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a> 32 */ 33 public interface AppearanceControl 34 { 35 36 /** 37 * Returns whether this item has a controllable background. 38 * @return whether this item has a controllable background 39 */ 40 default boolean isBackground() 41 { 42 return false; 43 } 44 45 /** 46 * Returns whether this item has a controllable foreground. 47 * @return whether this item has a controllable foreground 48 */ 49 default boolean isForeground() 50 { 51 return false; 52 } 53 54 /** 55 * Returns whether this item has a controllable font. 56 * @return whether this item has a controllable font 57 */ 58 default boolean isFont() 59 { 60 return false; 61 } 62 63 }