ColorSwatch.java Source code

Java tutorial

Introduction

Here is the source code for ColorSwatch.java

Source

/*
 *  ColorSwatch.java
 *  2007-03-03
 */

//cb.aloe.decor;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;

import javax.swing.Icon;

/**
 * An icon for painting a square swatch of a specified Color.
 * 
 * @author Christopher Bach
 */
public class ColorSwatch implements Icon {

    private Color ourSwatchColor = Color.white;

    private Color ourBorderColor = Color.black;

    private boolean ourBorderPainted = true;

    private boolean ourSwatchIsMultiColor = false;

    private boolean ourSwatchIsVoid = false;

    private int ourSwatchSize = 14;

    /**
     * Creates a standard 14 x 14 swatch with a black border and white background.
     */
    public ColorSwatch() {

    }

    /**
     * Creates a swatch of the specified size with a black border and white
     * background.
     */
    public ColorSwatch(int size) {
        setSwatchSize(size);
    }

    /**
     * Creates a swatch of the specified size with a black border and white
     * background and determines whether or n not the border should be painted.
     */
    public ColorSwatch(int size, boolean borderPainted) {
        setSwatchSize(size);
        setBorderPainted(borderPainted);
    }

    /**
     * 
     */
    public ColorSwatch(Color color) {
        setColor(color);
    }

    /**
     * 
     */
    public ColorSwatch(int size, Color color) {
        setSwatchSize(size);
        setColor(color);
    }

    /**
     * 
     */
    public ColorSwatch(int size, Color color, Color borderColor) {
        setSwatchSize(size);
        setColor(color);
        setBorderColor(borderColor);
        setBorderPainted(true);
    }

    /**
     * Sets the size of this swatch.
     */
    public void setSwatchSize(int size) {
        if (size > 0)
            ourSwatchSize = size;
        else
            ourSwatchSize = 14;
    }

    /**
     * Returns the size of this swatch.
     */
    public int getSwatchSize() {
        return ourSwatchSize;
    }

    /**
     * Determines whether or not this swatch's border should be painted.
     */
    public void setBorderPainted(boolean borderPainted) {
        ourBorderPainted = borderPainted;
    }

    /**
     * Returns whether or not this swatch's border is painted.
     */
    public boolean isBorderPainted() {
        return ourBorderPainted;
    }

    /**
     * Sets the color of this swatch's border.
     */
    public void setBorderColor(Color color) {
        ourBorderColor = color;
    }

    /**
     * Returns the color of this swatch's border.
     */
    public Color getBorderColor() {
        return ourBorderColor;
    }

    /**
     * Sets the color that this swatch represents.
     */
    public void setColor(Color color) {
        ourSwatchIsMultiColor = false;
        ourSwatchColor = color;
    }

    /**
     * Returns the color that this swatch represents.
     */
    public Color getColor() {
        return ourSwatchColor;
    }

    /**
     * Sets this swatch to represent more than one color.
     */
    public void setMultiColor() {
        ourSwatchIsMultiColor = true;
    }

    /**
     * Returns whether or not this swatch represents more than one color.
     */
    public boolean isMultiColor() {
        return ourSwatchIsMultiColor;
    }

    /**
     * Determines whether or not this swatch is void. If the swatch is void, it
     * will not be painted at all.
     */
    public void setVoid(boolean isVoid) {
        // When true, this icon will not be painted at all.
        ourSwatchIsVoid = isVoid;
    }

    /**
     * Returns whether this swatch is void. If the swatch is void, it will not be
     * painted at all.
     */
    public boolean isVoid() {
        return ourSwatchIsVoid;
    }

    // // Icon implementation ////

    /**
     * Returns the width of this Icon.
     */
    public int getIconWidth() {
        return ourSwatchSize;
    }

    /**
     * Returns the height of this Icon.
     */
    public int getIconHeight() {
        return ourSwatchSize;
    }

    /**
     * Paints this Icon into the provided graphics context.
     */
    public void paintIcon(Component c, Graphics g, int x, int y) {
        if (ourSwatchIsVoid)
            return;

        Color oldColor = g.getColor();

        if (ourSwatchIsMultiColor) {
            g.setColor(Color.white);
            g.fillRect(x, y, ourSwatchSize, ourSwatchSize);
            g.setColor(ourBorderColor);
            for (int i = 0; i < ourSwatchSize; i += 2) {
                g.drawLine(x + i, y, x + i, y + ourSwatchSize);
            }
        }

        else if (ourSwatchColor != null) {
            g.setColor(ourSwatchColor);
            g.fillRect(x, y, ourSwatchSize, ourSwatchSize);
        }

        else {
            g.setColor(Color.white);
            g.fillRect(x, y, ourSwatchSize, ourSwatchSize);
            g.setColor(ourBorderColor);
            g.drawLine(x, y, x + ourSwatchSize, y + ourSwatchSize);
            g.drawLine(x, y + ourSwatchSize, x + ourSwatchSize, y);
        }

        if (ourBorderPainted) {
            g.setColor(ourBorderColor);
            g.drawRect(x, y, ourSwatchSize, ourSwatchSize);
        }

        g.setColor(oldColor);
    }

}