001: /* ====================================================================
002: * The QueryForm License, Version 1.1
003: *
004: * Copyright (c) 1998 - 2003 David F. Glasser. All rights
005: * reserved.
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by
022: * David F. Glasser."
023: * Alternately, this acknowledgment may appear in the software itself,
024: * if and wherever such third-party acknowledgments normally appear.
025: *
026: * 4. The names "QueryForm" and "David F. Glasser" must
027: * not be used to endorse or promote products derived from this
028: * software without prior written permission. For written
029: * permission, please contact dglasser@pobox.com.
030: *
031: * 5. Products derived from this software may not be called "QueryForm",
032: * nor may "QueryForm" appear in their name, without prior written
033: * permission of David F. Glasser.
034: *
035: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL DAVID F. GLASSER, THE APACHE SOFTWARE
039: * FOUNDATION OR ITS CONTRIBUTORS, OR ANY AUTHORS OR DISTRIBUTORS
040: * OF THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: * ====================================================================
049: *
050: * This product includes software developed by the
051: * Apache Software Foundation (http://www.apache.org/).
052: *
053: * ====================================================================
054: *
055: * $Source: /cvsroot/qform/qform/src/org/glasser/swing/BlankIcon.java,v $
056: * $Revision: 1.1 $
057: * $Author: dglasser $
058: * $Date: 2003/04/30 02:41:58 $
059: *
060: * --------------------------------------------------------------------
061: */
062: package org.glasser.swing;
063:
064: import javax.swing.*;
065: import java.awt.*;
066:
067: /**
068: * This is a blank icon. It does no actual painting, so whatever component it is contained
069: * by should paint the area beneath it if necessary. It's primary use is as a spacer.
070: */
071: public class BlankIcon implements Icon, java.io.Serializable {
072:
073: protected double size = 16.0;
074:
075: int width = 16;
076:
077: int height = 16;
078:
079: /**
080: * Constructs a BlankIcon with a height and width of 16 pixels.
081: */
082: public BlankIcon() {
083: }
084:
085: /**
086: * Constructs a BlankIcon with a height and width equal to "size".
087: */
088: public BlankIcon(double size) {
089: if (size < 1 || size > Integer.MAX_VALUE) {
090: throw new IllegalArgumentException(
091: "BlankIcon(int size): size must be between 1 and "
092: + Integer.MAX_VALUE + ".");
093: }
094:
095: this .size = size;
096:
097: width = (int) size;
098:
099: height = (int) size;
100:
101: }
102:
103: /**
104: * This is an empty implementation, that does no actual painting.
105: */
106: public void paintIcon(Component c, Graphics g, int x, int y) {
107:
108: }
109:
110: /**
111: * Returns the icon's width.
112: *
113: * @return an int specifying the fixed width of the icon.
114: */
115: public int getIconWidth() {
116: return width;
117: }
118:
119: /**
120: * Returns the icon's height.
121: *
122: * @return an int specifying the fixed height of the icon.
123: */
124: public int getIconHeight() {
125: return width;
126: }
127:
128: /**
129: * Launches a small demonstration program.
130: */
131: public static void main(String[] args) throws Exception {
132:
133: JFrame frame = new JFrame();
134: JButton button = new JButton("Click");
135: frame.setSize(200, 200);
136: frame.setContentPane(new JPanel());
137: frame.getContentPane().add(button);
138:
139: button.addActionListener(new java.awt.event.ActionListener() {
140: int counter = 0;
141: BevelArrowIcon upIcon = new BevelArrowIcon(10.0,
142: BevelArrowIcon.UP);
143: BevelArrowIcon downIcon = new BevelArrowIcon(10.0,
144: BevelArrowIcon.DOWN);
145: BlankIcon blankIcon = new BlankIcon(10.0);
146:
147: public void actionPerformed(java.awt.event.ActionEvent e) {
148: JButton button = (JButton) e.getSource();
149: int i = counter++ % 3;
150: if (i == 0) {
151: button.setIcon(upIcon);
152: } else if (i == 1) {
153: button.setIcon(downIcon);
154: } else {
155: button.setIcon(blankIcon);
156: }
157:
158: }
159: });
160:
161: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
162: frame.setVisible(true);
163:
164: }
165:
166: }
|