001: /*
002: * DisabledField.java
003: *
004: * Copyright (C) 2002, 2003, 2004, 2005, 2006 Takis Diakoumis
005: *
006: * This program is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU General Public License
008: * as published by the Free Software Foundation; either version 2
009: * of the License, or any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
019: *
020: */
021:
022: package org.underworldlabs.swing;
023:
024: import java.awt.Color;
025: import java.awt.Component;
026: import java.awt.Insets;
027: import javax.swing.BorderFactory;
028: import javax.swing.JLabel;
029: import javax.swing.UIManager;
030: import javax.swing.border.Border;
031: import javax.swing.border.LineBorder;
032:
033: /* ----------------------------------------------------------
034: * CVS NOTE: Changes to the CVS repository prior to the
035: * release of version 3.0.0beta1 has meant a
036: * resetting of CVS revision numbers.
037: * ----------------------------------------------------------
038: */
039:
040: /**
041: * A convenience class providing a simple component
042: * to display text within a rectangle achieving the same
043: * effect as displayed when disabling a <code>JTextField</code>
044: * under the Metal L&F. This will provide a common 'disabled'
045: * component across all L&Fs that remains lightweight and does
046: * not feature or require those methods as would be available
047: * using a <code>JTextField</code>.
048: *
049: * <p>Some limitations have been deliberately introduced. The
050: * component height will always be 19px. The width is determined
051: * as specified or by the layout manager. In any case, This
052: * component's size should not require any modification given its
053: * limited design and purpose.
054: *
055: * @author Takis Diakoumis
056: * @version $Revision: 1.4 $
057: * @date $Date: 2006/05/14 06:56:07 $
058: */
059: public class DisabledField extends JLabel {
060:
061: protected static Border border;
062: protected static Insets insets;
063:
064: /** <p>Creates a new instance with the text to be
065: * displayed as blank.
066: */
067: public DisabledField() {
068: this ("");
069: }
070:
071: /** <p>Creates a new instance with the specified
072: * text to be displayed.
073: *
074: * @param the text to display
075: */
076: public DisabledField(String text) {
077: super (text);
078:
079: if (insets == null || border == null) {
080: insets = new Insets(3, 3, 3, 3);
081: border = new DisabledBorder(UIManager
082: .getColor("TextField.inactiveForeground"));
083: }
084:
085: setBorder(border);
086: }
087:
088: class DisabledBorder extends LineBorder {
089:
090: public DisabledBorder(Color color) {
091: super (color, 1, false);
092: }
093:
094: public Insets getBorderInsets() {
095: return DisabledField.insets;
096: }
097:
098: public Insets getBorderInsets(Component c, Insets insets) {
099: return DisabledField.insets;
100: }
101:
102: } // class DisabledBorder
103:
104: }
|