/*
* @(#)SynthArrowButton.java 1.15 03/12/19
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.swing.plaf.synth;
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.UIResource;
/**
* JButton object that draws a scaled Arrow in one of the cardinal directions.
*
* @version 1.15, 12/19/03
* @author Scott Violet
*/
class SynthArrowButton extends JButton implements SwingConstants, UIResource {
private int direction;
public SynthArrowButton(int direction) {
super();
setFocusable(false);
setDirection(direction);
setDefaultCapable(false);
}
public String getUIClassID() {
return "ArrowButtonUI";
}
public void updateUI() {
setUI(new SynthArrowButtonUI());
}
public void setDirection(int dir) {
direction = dir;
putClientProperty("__arrow_direction__", new Integer(dir));
repaint();
}
public int getDirection() {
return direction;
}
private static class SynthArrowButtonUI extends SynthButtonUI {
protected void installDefaults(AbstractButton b) {
super.installDefaults(b);
updateStyle(b);
}
protected void paint(SynthContext context, Graphics g) {
SynthArrowButton button = (SynthArrowButton)context.
getComponent();
context.getPainter().paintArrowButtonForeground(
context, g, 0, 0, button.getWidth(), button.getHeight(),
button.getDirection());
}
void paintBackground(SynthContext context, Graphics g, JComponent c) {
context.getPainter().paintArrowButtonBackground(context, g, 0, 0,
c.getWidth(), c.getHeight());
}
public void paintBorder(SynthContext context, Graphics g, int x,
int y, int w, int h) {
context.getPainter().paintArrowButtonBorder(context, g, x, y, w,h);
}
public Dimension getMinimumSize() {
return new Dimension(5, 5);
}
public Dimension getMaximumSize() {
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
public Dimension getPreferredSize(JComponent c) {
SynthContext context = getContext(c);
int size = context.getStyle().getInt(context, "ArrowButton.size",
16);
context.dispose();
return new Dimension(size, size);
}
}
}
|