Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Animated Button

/**  *   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/AnimatedButton.java,v 1.1.1.1 2006/01/12 04:54:02 mburnside Exp $   *       *    File: $Workfile: AnimatedButton.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 AnimatedButton extends JPanel {                  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 JButton button = new JButton();         private int fadeSpeed = 50;         private boolean animate = false;         private boolean allowAnimate = true; // we will animate   private Color foreground = Color.black;   public void setDefaultForeground(Color foreground) { this.foreground = foreground; }      public AnimatedButton(String buttonText, boolean useBgImage, Color defaultForeground, boolean allowAnimate) {      this.setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));           button.setText(buttonText);     this.foreground = defaultForeground;           this.allowAnimate = allowAnimate;           setOpaque(false);           add(button);           if(allowAnimate)             runThread.start();   }                           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++) {                    button.setForeground(colors[i]);                    try { runThread.sleep(fadeSpeed); } catch(Exception e) { }                  }                  try { runThread.sleep(100); } catch(Exception e) { }                  for(int i = colors.length -1 ; i >= 0; i--) {                    button.setForeground(colors[i]);                         try { runThread.sleep(fadeSpeed); } catch(Exception le) { }                  }                } // end if animate               } //end while             }           }         );         /**          *          * Sets the button's and panel's minimum size          *          * @param width width, in pixels          * @param height height, in pixels          *          */                 public void setMaximumSize(int width, int height) {            setMaximumSize(new Dimension(width, height));            button.setMaximumSize(new Dimension(width, height));                }         /**          *          * Sets the button's and panel's minimum size          *          * @param width width, in pixels          * @param height height, in pixels          *          */         public void setMinimumSize(int width, int height) {            setMinimumSize(new Dimension(width, height));            button.setMinimumSize(new Dimension(width, height));                }         /**          *          * Sets the button's and panel's preferred size          *          * @param width width, in pixels          * @param height height, in pixels          *          */                 public void setPreferredSize(int width, int height) {            setPreferredSize(new Dimension(width, height));                 button.setPreferredSize(new Dimension(width, height));                }         /**          *          * gets the button instance          *          * @return JButton component of this class          *          */                 public JButton getButton() {            return button;                }                  public void setText(String text) {            button.setText(text);         }                  public void setEnable(boolean animate) {                 if(allowAnimate) {                   this.animate = animate;                   if(!animate)                     button.setForeground(Color.black);                   button.setEnabled(animate);                 }                 else {                   button.setEnabled(animate);                 }         }          }