home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / JPasswordField.java < prev    next >
Text File  |  1998-02-26  |  6KB  |  201 lines

  1. /*
  2.  * @(#)JPasswordField.java    1.18 98/02/12
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20. package com.sun.java.swing;
  21.  
  22. import com.sun.java.swing.text.*;
  23. import com.sun.java.swing.plaf.*;
  24. import com.sun.java.accessibility.*;
  25.  
  26. /**
  27.  * JTextField is a lightweight component that allows the editing 
  28.  * of a single line of text where the view indicates something was
  29.  * typed, but does not show the original characters. It is intended 
  30.  * to be source-compatible with java.awt.TextField used with echoChar 
  31.  * set.  It is provided seperately to make it easier to safely change 
  32.  * the ui for the JTextField without affecting password entries.
  33.  * <p>
  34.  * Warning: serialized objects of this class will not be compatible with
  35.  * future swing releases.  The current serialization support is appropriate 
  36.  * for short term storage or RMI between Swing1.0 applications.  It will
  37.  * not be possible to load serialized Swing1.0 objects with future releases
  38.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  39.  * baseline for the serialized form of Swing objects.
  40.  *
  41.  * @beaninfo
  42.  *  attribute: isContainer false
  43.  *
  44.  * @author  Timothy Prinzing
  45.  * @version 1.18, 02/12/98
  46.  */
  47. public class JPasswordField extends JTextField {
  48.  
  49.     /**
  50.      * Constructs a new JPasswordField.
  51.      */
  52.     public JPasswordField() {
  53.         this(null,null,0);
  54.     }
  55.  
  56.     /**
  57.      * Constructs a new JPasswordField initialized with the specified text.
  58.      *
  59.      * @param text the text to be displayed
  60.      */
  61.     public JPasswordField(String text) {
  62.         this(null, text, 0);
  63.     }
  64.  
  65.     /**
  66.      * Constructs a new empty JPasswordField with the specified
  67.      * number of columns.
  68.      *
  69.      * @param columns the number of columns
  70.      */ 
  71.     public JPasswordField(int columns) {
  72.         this(null, null, columns);
  73.     }
  74.  
  75.     /**
  76.      * Constructs a new JPasswordField initialized with the specified text
  77.      * and columns.
  78.      *
  79.      * @param text the text to be displayed
  80.      * @param columns the number of columns
  81.      */
  82.     public JPasswordField(String text, int columns) {
  83.         this(null, text, columns);
  84.     }
  85.  
  86.     /**
  87.      * Constructs a new JPasswordField that uses the given text storage
  88.      * model and the given number of columns.  This is the constructor
  89.      * through which the other constructors feed.
  90.      *
  91.      * @param doc  the text storage to use
  92.      * @param txt the text to be displayed
  93.      * @param columns  the number of columns to use to calculate 
  94.      *   the preferred width.  If columns is set to zero, the
  95.      *   preferred width will be whatever naturally results from
  96.      *   the component implementation.
  97.      */
  98.     public JPasswordField(Document doc, String txt, int columns) {
  99.         super(doc, txt, columns);
  100.         setName(base + nameCounter++);
  101.         echoChar = '*';
  102.     }
  103.  
  104.     /**
  105.      * Returns the name of the L&F class that renders this component.
  106.      *
  107.      * @return "PasswordFieldUI"
  108.      * @see JComponent#getUIClassID
  109.      * @see UIDefaults#getUI
  110.      */
  111.     public String getUIClassID() {
  112.         return "PasswordFieldUI";
  113.     }
  114.  
  115.  
  116.     /**
  117.      * Returns the character to be used for echoing.
  118.      *
  119.      * @return the echo character
  120.      * @see #setEchoChar
  121.      * @see #echoCharIsSet
  122.      */
  123.     public char getEchoChar() {
  124.         return echoChar;
  125.     }
  126.  
  127.     /**
  128.      * Sets the echo character for this JPasswordField.  Note 
  129.      * that this is largely a suggestion to the view as the
  130.      * view that gets installed can use whatever graphic techniques
  131.      * it desires to represent the field.
  132.      *
  133.      * @param c the echo character to display
  134.      * @see #echoCharIsSet
  135.      * @see #getEchoChar
  136.      * @beaninfo
  137.      * description: character to display in place of the real characters
  138.      */
  139.     public void setEchoChar(char c) {
  140.         echoChar = c;
  141.     }
  142.  
  143.     /**
  144.      * Returns true if this JPasswordField has a character set for
  145.      * echoing.
  146.      *
  147.      * @return true if a character is set for echoing
  148.      * @see #setEchoChar
  149.      * @see #getEchoChar
  150.      */
  151.     public boolean echoCharIsSet() {
  152.         return echoChar != 0;
  153.     }
  154.  
  155.     private char echoChar;
  156.     private static final String base = "password";
  157.     private static int nameCounter = 0;
  158.  
  159.  
  160. /////////////////
  161. // Accessibility support
  162. ////////////////
  163.  
  164.  
  165.     /**
  166.      * Get the AccessibleContext associated with this JPasswordField
  167.      *
  168.      * @return the AccessibleContext of this JPasswordField
  169.      */
  170.     public AccessibleContext getAccessibleContext() {
  171.         if (accessibleContext == null) {
  172.             accessibleContext = new AccessibleJPasswordField();
  173.         }
  174.         return accessibleContext;
  175.     }
  176.  
  177.     /**
  178.      * The class used to obtain the accessible role for this object.
  179.      * <p>
  180.      * Warning: serialized objects of this class will not be compatible with
  181.      * future swing releases.  The current serialization support is appropriate
  182.      * for short term storage or RMI between Swing1.0 applications.  It will
  183.      * not be possible to load serialized Swing1.0 objects with future releases
  184.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  185.      * baseline for the serialized form of Swing objects.
  186.      */
  187.     protected class AccessibleJPasswordField extends AccessibleJTextField {
  188.  
  189.         /**
  190.          * Gets the role of this object.
  191.          *
  192.          * @return an instance of AccessibleRole describing the role of the
  193.          * object
  194.          * @see AccessibleRole
  195.          */
  196.         public AccessibleRole getAccessibleRole() {
  197.             return AccessibleRole.PASSWORD_TEXT;
  198.         }
  199.     }
  200. }
  201.