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 * <p>
25 * Copyright (c) 2013-2023 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
26 * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
27 * </p>
28 * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
29 * @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
30 * @author <a href="https://dittlab.tudelft.nl">Wouter Schakel</a>
31 */
32 public interface AppearanceControl
33 {
34
35 /**
36 * Returns whether this item has a controllable background.
37 * @return whether this item has a controllable background
38 */
39 default boolean isBackground()
40 {
41 return false;
42 }
43
44 /**
45 * Returns whether this item has a controllable foreground.
46 * @return whether this item has a controllable foreground
47 */
48 default boolean isForeground()
49 {
50 return false;
51 }
52
53 /**
54 * Returns whether this item has a controllable font.
55 * @return whether this item has a controllable font
56 */
57 default boolean isFont()
58 {
59 return false;
60 }
61
62 }