com.explodingpixels.painter

## Class ButtonStatePainter<B extends AbstractButton>

- java.lang.Object
- - com.explodingpixels.painter.ButtonStatePainter<B>

All Implemented Interfaces:
  Painter<B>

    public class ButtonStatePainter<B extends AbstractButton>
    extends Object
    implements Painter<B>

A `Painter` that can be used to paint the various states of a button. This painter will delegate to the supplied painters based on the current state of the button. That is, if the button is being "rolled over", the `rolloverPainter` will be called; if the button is pressed, then the `pressedPainter` will be called, etc.

### Nested Class Summary

Nested Classes
`static class` `ButtonStatePainter.DummyPainter` An implementation of `Painter` that does no painting.

### Constructor Summary

Constructors
Constructor and Description
`ButtonStatePainter(Painter<Component> defaultPainter)` Creates a painter that will always use the given `Painter` to paint the button.
`ButtonStatePainter(Painter<Component> defaultPainter, Painter<Component> rolloverPainter, Painter<Component> pressedPainter, Painter<Component> selectedPainter)` Creates a painter that will delegate to the given painters based on the current state of the button.

### Method Summary

Methods
`void` `paint(Graphics2D g, B button, int width, int height)` Renders to the given `Graphics2D`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ButtonStatePainter

    public ButtonStatePainter(Painter<Component> defaultPainter)

Creates a painter that will always use the given `Painter` to paint the button.

Parameters:
  `defaultPainter` - the `Painter` to use to paint the button.

#### ButtonStatePainter

    public ButtonStatePainter(Painter<Component> defaultPainter,
                      Painter<Component> rolloverPainter,
                      Painter<Component> pressedPainter,
                      Painter<Component> selectedPainter)

Creates a painter that will delegate to the given painters based on the current state of the button.

Parameters:
  `defaultPainter` - the `Painter` to use when the button has no specific state.
  `rolloverPainter` - the `Painter` to use when the button is being "rolled over".
  `pressedPainter` - the `Painter` to use when the button is being pressed.
  `selectedPainter` - the `Painter` to use when the button has been selected.

### Method Detail

#### paint

    public void paint(Graphics2D g,
             B button,
             int width,
             int height)

Description copied from interface: `Painter`
Renders to the given `Graphics2D`. The supplied graphics context may be modified - it's state need not be restored upon completion of painting.

Specified by:
  `paint` in interface `Painter<B extends AbstractButton>`
Parameters:
  `g` - the graphics context to paint into. It's state need not be restored. Will not be null.
  `button` - the object to be painted.
  `width` - the width within the object to paint.
  `height` - the height within the object to paint.