001: /*
002: * Gruntspud
003: *
004: * Copyright (C) 2002 Brett Smith.
005: *
006: * Written by: Brett Smith <t_magicthize@users.sourceforge.net>
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Library General Public License
010: * as published by the Free Software Foundation; either version 2 of
011: * the License, or (at your option) any later version.
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU Library General Public License for more details.
016: *
017: * You should have received a copy of the GNU Library General Public
018: * License along with this program; if not, write to the Free Software
019: * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
020: */
021:
022: package gruntspud.ui.icons;
023:
024: import java.awt.Color;
025: import java.awt.Component;
026: import java.awt.Dimension;
027: import java.awt.Graphics;
028:
029: import javax.swing.Icon;
030:
031: /**
032: * A simple colored implementation of an <code>Icon</code>
033: *
034: * @author Brett Smith
035: */
036: public class ColorIcon implements Icon {
037: // Private instance variables
038: private Dimension size;
039: private Color color;
040: private Color borderColor;
041:
042: /**
043: * Construct a new 16x16 <code>ColorIcon</code> black icon
044: *
045: * @param none
046: */
047: public ColorIcon() {
048: this (null);
049: }
050:
051: /**
052: * Construct a new 16x16 <code>ColorIcon</code> given a color
053: *
054: * @param color the icon color
055: */
056: public ColorIcon(Color color) {
057: this (color, null);
058: }
059:
060: /**
061: * Construct a new 16x16 <code>ColorIcon</code> given a color and border
062: * color
063: *
064: * @param color the icon color
065: * @param borderColor the border color
066: */
067: public ColorIcon(Color color, Color borderColor) {
068: this (color, null, borderColor);
069: }
070:
071: /**
072: * Construct a new <code>ColorIcon</code> given a size, color and border
073: * color
074: *
075: * @param color the icon color
076: * @param size the icon size
077: * @param borderColor the border color
078: */
079: public ColorIcon(Color color, Dimension size, Color borderColor) {
080: setColor(color);
081: setSize(size);
082: setBorderColor(borderColor);
083: }
084:
085: /**
086: * Draw the icon at the specified location. Icon implementations
087: * may use the Component argument to get properties useful for
088: * painting, e.g. the foreground or background color.
089: */
090: public void paintIcon(Component c, Graphics g, int x, int y) {
091: if (color == null) {
092: if (borderColor != null) {
093: g.setColor(borderColor);
094: } else {
095: g.setColor(Color.black);
096: }
097: g.drawRect(x, y, getIconWidth(), getIconHeight());
098: g.drawLine(x, y, x + getIconHeight() - 1, y
099: + getIconHeight() - 1);
100: } else {
101: g.setColor((color == null) ? Color.black : color);
102: g.fillRect(x, y, getIconWidth(), getIconHeight());
103: if (borderColor != null) {
104: g.setColor(borderColor);
105: g.drawRect(x, y, getIconWidth(), getIconHeight());
106: }
107:
108: }
109: }
110:
111: /**
112: * Set the icon size. <code>null</code> means 16x16
113: *
114: * @param size the icon size
115: */
116: public void setSize(Dimension size) {
117: this .size = size;
118: }
119:
120: /**
121: * Set the icon color. <code>null</code> means black
122: *
123: * @param color icon color
124: */
125: public void setColor(Color color) {
126: this .color = color;
127: }
128:
129: /**
130: * Set the border color. <code>null</code> means no border
131: *
132: * @param color border color
133: */
134: public void setBorderColor(Color borderColor) {
135: this .borderColor = borderColor;
136: }
137:
138: /**
139: * Returns the icon's width.
140: *
141: * @return an int specifying the fixed width of the icon.
142: */
143: public int getIconWidth() {
144: return (size == null) ? 16 : size.width;
145: }
146:
147: /**
148: * Returns the icon's height.
149: *
150: * @return an int specifying the fixed height of the icon.
151: */
152: public int getIconHeight() {
153: return (size == null) ? 16 : size.height;
154: }
155: }
|