{@code MetalTheme} provides the color palette and fonts used bythe Java Look and Feel.
{@code MetalTheme} is abstract, see {@code DefaultMetalTheme} and{@code OceanTheme} for concrete implementations.
{@code MetalLookAndFeel} maintains the current theme that thethe {@code ComponentUI} implementations for metal use. Refer to{@link MetalLookAndFeel#setCurrentTheme MetalLookAndFeel.setCurrentTheme(MetalTheme)} for details on changingthe current theme.
{@code MetalTheme} provides a number of public methods for gettingcolors. These methods are implemented in terms of a handful of protected abstract methods. A subclass need only override the protected abstract methods ( {@code getPrimary1}, {@code getPrimary2}, {@code getPrimary3}, {@code getSecondary1}, {@code getSecondary2}, and {@code getSecondary3}); although a subclass may override the other public methods for more control over the set of colors that are used.
Concrete implementations of {@code MetalTheme} must return {@code non-null}values from all methods. While the behavior of returning {@code null} isnot specified, returning {@code null} will result in incorrect behavior.
It is strongly recommended that subclasses return completely opaque colors. To do otherwise may result in rendering problems, such as visual garbage.
@see DefaultMetalTheme
@see OceanTheme
@see MetalLookAndFeel#setCurrentTheme
@author Steve Wilson