Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Animated PasswordField

/**  *   Arsenal Real-Time Collaboration Server Project  *   Copyright (C) 2003  Michael Burnside, Arsenal Project  *  *   This library is free software; you can redistribute it and/or  *   modify it under the terms of the GNU Lesser General Public  *   License as published by the Free Software Foundation; either  *   version 2.1 of the License, or (at your option) any later version.  *  *   This library is distributed in the hope that it will be useful,  *   but WITHOUT ANY WARRANTY; without even the implied warranty of  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *   Lesser General Public License for more details.  *  *   You should have received a copy of the GNU Lesser General Public  *   License along with this library; if not, write to the Free Software  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  *  * *****************************************************************   *    $Header: /cvs/coolcollaborator/prod/coolcollaborator/prod/util/src/com/arsenal/util/AnimatedPasswordField.java,v 1.1.1.1 2006/01/12 04:54:02 mburnside Exp $   *       *    File: $Workfile: AnimatedPasswordField.java $   *       *    Description:   *       *      *       *    @author      michael@michaelburnside.com (arsenal-1)   *    @author      Michael Burnside   *    @version     %I%, %G%   *    @since       1.0   *       */ import java.io.File; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AnimatedPasswordField extends JPanel implements FocusListener {                  Font font = new Font("Arial", Font.PLAIN, 10);         Color darkSlateGray = new Color(49,79,79);         Color dimGray = new Color(105,105,105);         Color slateGray = new Color(112,138,144);         Color lightSlateGray = new Color(119,136,153);         Color gray = new Color(190,190,190);         Color lightGray = new Color(211,211,211);         Color[] colors = { Color.black, darkSlateGray, dimGray, slateGray,                 lightSlateGray, gray, lightGray, Color.white };            private JPasswordField textField = new JPasswordField();         private JLabel label = new JLabel();         private int fadeSpeed = 50;         private boolean animate = false;         private boolean allowFade = false;         private boolean fadeOut = false;         private boolean fadeIn = false;   private Color foreground = Color.black;   public void setDefaultForeground(Color foreground) { this.foreground = foreground; }         private boolean allowAnimate = true; // we will animate      public AnimatedPasswordField(String labelText, boolean useBgImage, Color defaultForeground, boolean allowAnimate) {      this.setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));           label.setText(labelText);     textField.addFocusListener(this);           label.setBackground(colors[0]);     textField.setBackground(colors[0]);     this.foreground = defaultForeground;           this.allowAnimate = allowAnimate;           label.setForeground(foreground);     textField.setForeground(foreground);           add(label);     add(textField);       if(allowAnimate)            runThread.start();         if(allowFade) {           fadeInThread.start();           fadeOutThread.start();         }           setOpaque(false);   }      public AnimatedPasswordField(String labelText, boolean useBgImage, Color defaultForeground, boolean allowAnimate, boolean allowFade) {        this.setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));             label.setText(labelText);       textField.addFocusListener(this);             label.setBackground(colors[0]);       textField.setBackground(colors[0]);       this.foreground = defaultForeground;             this.allowAnimate = allowAnimate;             this.allowFade = allowFade;             label.setForeground(foreground);       textField.setForeground(foreground);             add(label);       add(textField);         if(allowAnimate)              runThread.start();           if(allowFade) {             fadeInThread.start();             fadeOutThread.start();           }             setOpaque(false);     }                            private Thread runThread = new Thread(           new  Runnable() {                 public void run() {               while(true) {                 try { runThread.sleep(100); } catch(Exception e) { }                        if(animate) {                   for(int i = 0; i < colors.length; i++) {                     label.setForeground(colors[i]);                     try { runThread.sleep(20); } catch(Exception e) { }                   }                   try { runThread.sleep(100); } catch(Exception e) { }                   for(int i = colors.length -1 ; i >= 0; i--) {                     label.setForeground(colors[i]);                           try { runThread.sleep(20); } catch(Exception le) { }                   }                 } // end if animate                 label.setForeground(foreground);                } //end while             }           }         );                        private Thread fadeInThread = new Thread(           new  Runnable() {                 public void run() {                while(true) {                  if(fadeIn) {                         fadeIn();                    fadeIn = false;                  }                  try { fadeInThread.sleep(fadeSpeed); } catch(Exception le) { }                }             }           }         );                           private Thread fadeOutThread = new Thread(           new  Runnable() {                 public void run() {                while(true) {                  if(fadeOut) {                    fadeOut();                    fadeOut = false;                  }                  try { fadeOutThread.sleep(fadeSpeed); } catch(Exception le) { }                }             }           }         );            public void focusGained(FocusEvent e)    {         //if(allowAnimate) fadeIn();         animate = true;         if(allowFade) {           fadeIn = true;           fadeOut = false;         }         else {          textField.setBackground(Color.white);          textField.setForeground(Color.black);         }   }   public void focusLost(FocusEvent e)    {         //if(allowAnimate) fadeOut();         animate = false;         if(allowFade) {           fadeOut = true;           fadeIn = false;           try { runThread.sleep(50); } catch(Exception le) { }         }         else {          textField.setBackground(Color.black);          textField.setForeground(Color.white);         }   }         /**          *          * disable the components on this panel          *          */   public void setInputsDisabled()    {            setInputsEnabled(false);   }         /**          *          * enable the components on this panel          *          */   public void setInputsEnabled()    {            setInputsEnabled(true);   }         /**          *          * enable or disable the components on this panel          *          * @param enable or disable          *          */   public void setInputsEnabled(boolean enable)    {      textField.setEnabled(enable);      //label.setEnabled(enable);            if(!enable) animate = false;   }         /**          *          * are the inputs enabled          *          * @returns boolean          *          */   public boolean areInputsEnabled()    {      return textField.isEnabled();   }                 /**          *          * Sets the label's maximum size          *          * @param width width, in pixels          * @param height height, in pixels          *          */                  public void setLabelMaximumSize(int width, int height) {            label.setMaximumSize(new Dimension(width, height));                }         /**          *          * Sets the label's minimum size          *          * @param width width, in pixels          * @param height height, in pixels          *          */         public void setLabelMinimumSize(int width, int height) {            label.setMinimumSize(new Dimension(width, height));                }         /**          *          * Sets the label's preferred size          *          * @param width width, in pixels          * @param height height, in pixels          *          */                 public void setLabelPreferredSize(int width, int height) {            label.setPreferredSize(new Dimension(width, height));                }         /**          *          * Sets the text field's maximum size          *          * @param width width, in pixels          * @param height height, in pixels          *          */         public void setTextFieldMaximumSize(int width, int height) {            textField.setMaximumSize(new Dimension(width, height));                }         /**          *          * Sets the text field's minimum size          *          * @param width width, in pixels          * @param height height, in pixels          *          */         public void setTextFieldMinimumSize(int width, int height) {            textField.setMinimumSize(new Dimension(width, height));                }         /**          *          * Sets the text field's preferred size          *          * @param width width, in pixels          * @param height height, in pixels          *          */                 public void setTextFieldPreferredSize(int width, int height) {            textField.setPreferredSize(new Dimension(width, height));                }         /**          *          * Gets the text field's value          *          * @return the text field value after trim()          *          */                 public String getValue() {            return textField.getText().trim();                }         /**          *          * gets the label instance          *          * @return jlabel component of this class          *          */                 public JLabel getLabel() {            return label;                }         /**          *          * gets the text field instance          *          * @return textfield component of this class          *          */                 public JTextField getTextField() {            return textField;                }                  public void setText(String text) {            textField.setText(text);         }                  private void fadeIn() {           textField.setForeground(Color.black);           for(int i = 0; i < colors.length; i++) {             textField.setBackground(colors[i]);             try { Thread.sleep(fadeSpeed); } catch(Exception e) { }           }                         }                  private void fadeOut() {           textField.setForeground(Color.white);           for(int i = colors.length -1 ; i >= 0; i--) {             textField.setBackground(colors[i]);              try { Thread.sleep(fadeSpeed); } catch(Exception le) { }           }                         }          }