|
What this is
Other links
The source code/* * 10/29/2001 - 22:23:08 * * JextButton.java - A modified button * Copyright (C) 2001 Romain Guy * romain.guy@jext.org * www.jext.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.jext.gui; import javax.swing.GrayFilter; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import java.awt.Color; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.FilteredImageSource; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import org.jext.EditAction; import org.jext.Jext; import org.jext.JextTextArea; import org.jext.MenuAction; public class JextButton extends JButton { private MouseHandler _mouseListener; private ImageIcon grayedIcon, coloredIcon; private Color nColor; private static Color commonHighlightColor = new Color(192, 192, 210); private static boolean rollover = true; private static boolean blockHighlightChange = false; public static void setRollover(boolean enabled) { rollover = enabled; } public static void setHighlightColor(Color color) { if (!blockHighlightChange) commonHighlightColor = color; } public static Color getHighlightColor() { return commonHighlightColor; } public static void blockHighlightChange() { blockHighlightChange = true; } public static void unBlockHighlightChange() { blockHighlightChange = false; } private void init() { _mouseListener = new MouseHandler(); if (rollover) { setBorderPainted(false); addMouseListener(_mouseListener); } else { if (Jext.getButtonsHighlight()) { nColor = getBackground(); addMouseListener(_mouseListener); } } } public JextButton() { super(); init(); } public JextButton(Icon icon) { super(icon); init(); } public JextButton(String text) { super(text); init(); } public JextButton(String text, Icon icon) { super(text, icon); init(); } public void setGrayed(boolean on) { if (coloredIcon == null) coloredIcon = (ImageIcon) getIcon(); if (on && getRolloverIcon() == null) { GrayFilter filter = new GrayFilter(true, 35); Image grayImage = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(coloredIcon.getImage().getSource(), filter)); grayedIcon = new ImageIcon(grayImage); setRolloverIcon(coloredIcon); } setIcon(on ? grayedIcon : coloredIcon); setRolloverEnabled(on); } protected void fireActionPerformed(ActionEvent event) { JextTextArea area = MenuAction.getTextArea(this); area.setOneClick(null); area.endCurrentEdit(); Object[] listeners = listenerList.getListenerList(); ActionEvent e = null; for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i + 1] instanceof EditAction && !area.isEditable()) continue; if (listeners[i] == ActionListener.class) { if (e == null) { String actionCommand = event.getActionCommand(); if(actionCommand == null) actionCommand = getActionCommand(); e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand, event.getModifiers()); } ((ActionListener) listeners[i + 1]).actionPerformed(e); } } } class MouseHandler extends MouseAdapter { public void mouseEntered(MouseEvent me) { if (isEnabled()) { if (rollover) setBorderPainted(true); else setBackground(commonHighlightColor); } } public void mouseExited(MouseEvent me) { if (isEnabled()) { if (rollover) setBorderPainted(false); else setBackground(nColor); } } } } // End of JextButton.java |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.