pjs/grendel/widgets/ToolBarButton.java

116 строки
3.6 KiB
Java

/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Grendel mail/news client.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1997 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Contributed by: Jeff Galyan <talisman@anamorphic.com>
*/
package grendel.widgets;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/** The ToolBarButton class implements the standard Netscape toolbar button
* behaviour of painting a flat border normally, and a raised border when
* the mouse moves over it.
*
* @author <a href="mailto:talisman@anamorphic.com">Jeff Galyan</a>
* @version $Revision: 1.4 $
*/
public class ToolBarButton extends JButton implements MouseListener {
// Constructors
/** Default constructor.
*/
public ToolBarButton() {
super();
addMouseListener(this);
setMargin(new Insets(5,5,5,5));
}
/** Creates a button with an icon only.
* @param icon The Icon object to paint on the button.
*/
public ToolBarButton( javax.swing.Icon icon ) {
super(icon);
addMouseListener(this);
}
/** Creates a button with a text label only.
* @param text The text for the label.
*/
public ToolBarButton( String text ) {
super(text);
addMouseListener(this);
setMargin(new Insets(5,5,5,5));
}
/** Creates a button with a text label and an icon.
* @param text The label text.
* @param icon The icon.
*/
public ToolBarButton( String text, javax.swing.Icon icon ) {
super(text, icon);
addMouseListener(this);
}
// MouseListener implementation. The only events the button itself cares
// about are mouseEntered and mouseExited, but we have to provide no-op
// implementations of the rest to satisfy the implements clause.
/** Paints a raised border when the mouse passes over the button.
* @param evt The MouseEvent which triggered this handler.
*/
public void mouseEntered(MouseEvent evt) {
setBorder(BorderFactory.createRaisedBevelBorder());
setMargin(new Insets(5,5,5,5));
}
/** Paints an empty border when the mouse leaves the button area.
* @param evt The MouseEvent which triggered this handler.
*/
public void mouseExited(MouseEvent evt) {
setBorder(BorderFactory.createEmptyBorder());
}
/** Paints a loweredBevelBorder when the mouse is pressed. We have to
* have this since the default JButton behaviour is to simply make its
* background color darker.
*/
public void mousePressed(MouseEvent evt) {
setBorder(BorderFactory.createLoweredBevelBorder());
setMargin(new Insets(5,5,5,5));
}
/** Paints the border raised again when the mouse is released.
*/
public void mouseReleased(MouseEvent evt) {
setBorder(BorderFactory.createRaisedBevelBorder());
setMargin(new Insets(5,5,5,5));
}
// No-ops to satisfy the implements clause of this class.
public void mouseClicked(MouseEvent evt) { }
}