home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.metal;
-
- import com.sun.java.swing.AbstractButton;
- import com.sun.java.swing.UIManager;
- import com.sun.java.swing.plaf.ColorUIResource;
- import com.sun.java.swing.plaf.basic.BasicArrowButton;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Graphics;
-
- public class MetalScrollButton extends BasicArrowButton {
- private static Color shadowColor;
- private static Color highlightColor;
- private boolean isFreeStanding = false;
- private int buttonWidth;
-
- public MetalScrollButton(int var1, int var2, boolean var3) {
- super(var1);
- shadowColor = UIManager.getColor("ScrollBar.shadow");
- highlightColor = UIManager.getColor("ScrollBar.highlight");
- this.buttonWidth = var2;
- this.isFreeStanding = var3;
- }
-
- public void setFreeStanding(boolean var1) {
- this.isFreeStanding = var1;
- }
-
- public void paint(Graphics var1) {
- boolean var2 = ((Component)this).getParent().isEnabled();
- ColorUIResource var3 = var2 ? MetalLookAndFeel.getControlInfo() : MetalLookAndFeel.getControlDisabled();
- boolean var4 = ((AbstractButton)this).getModel().isPressed();
- int var5 = ((Component)this).getSize().width;
- int var6 = ((Component)this).getSize().height;
- if (var4) {
- var1.setColor(MetalLookAndFeel.getControlShadow());
- } else {
- var1.setColor(((Component)this).getBackground());
- }
-
- var1.fillRect(0, 0, var5, var6);
- if (((BasicArrowButton)this).getDirection() == 1) {
- if (!this.isFreeStanding) {
- var5 += 2;
- }
-
- var1.setColor(var3);
- var1.drawLine(7, 6, 8, 6);
- var1.drawLine(6, 7, 9, 7);
- var1.drawLine(5, 8, 10, 8);
- var1.drawLine(4, 9, 11, 9);
- if (var2) {
- var1.setColor(highlightColor);
- if (!var4) {
- var1.drawLine(1, 1, var5 - 3, 1);
- var1.drawLine(1, 1, 1, var6 - 1);
- }
-
- var1.drawLine(var5 - 1, 1, var5 - 1, var6 - 1);
- var1.setColor(shadowColor);
- var1.drawLine(0, 0, var5 - 2, 0);
- var1.drawLine(0, 0, 0, var6 - 1);
- var1.drawLine(var5 - 2, 2, var5 - 2, var6 - 1);
- } else {
- MetalUtils.drawDisabledBorder(var1, 0, 0, var5, var6 + 1);
- }
-
- if (!this.isFreeStanding) {
- var5 -= 2;
- return;
- }
- } else if (((BasicArrowButton)this).getDirection() == 5) {
- if (!this.isFreeStanding) {
- var5 += 2;
- ++var6;
- }
-
- var1.setColor(var3);
- var1.drawLine(4, 5, 11, 5);
- var1.drawLine(5, 6, 10, 6);
- var1.drawLine(6, 7, 9, 7);
- var1.drawLine(7, 8, 8, 8);
- if (var2) {
- var1.setColor(highlightColor);
- if (!var4) {
- var1.drawLine(1, 0, var5 - 3, 0);
- var1.drawLine(1, 0, 1, var6 - 3);
- }
-
- var1.drawLine(1, var6 - 1, var5 - 1, var6 - 1);
- var1.drawLine(var5 - 1, 0, var5 - 1, var6 - 1);
- var1.setColor(shadowColor);
- var1.drawLine(0, 0, 0, var6 - 2);
- var1.drawLine(var5 - 2, 0, var5 - 2, var6 - 2);
- var1.drawLine(2, var6 - 2, var5 - 2, var6 - 2);
- } else {
- MetalUtils.drawDisabledBorder(var1, 0, -1, var5, var6 + 1);
- }
-
- if (!this.isFreeStanding) {
- var5 -= 2;
- --var6;
- return;
- }
- } else if (((BasicArrowButton)this).getDirection() == 3) {
- if (!this.isFreeStanding) {
- var6 += 2;
- ++var5;
- }
-
- var1.setColor(var3);
- var1.drawLine(5, 4, 5, 11);
- var1.drawLine(6, 5, 6, 10);
- var1.drawLine(7, 6, 7, 9);
- var1.drawLine(8, 7, 8, 8);
- if (var2) {
- var1.setColor(highlightColor);
- if (!var4) {
- var1.drawLine(0, 1, var5 - 3, 1);
- var1.drawLine(0, 1, 0, var6 - 3);
- }
-
- var1.drawLine(var5 - 1, 1, var5 - 1, var6 - 1);
- var1.drawLine(0, var6 - 1, var5 - 1, var6 - 1);
- var1.setColor(shadowColor);
- var1.drawLine(0, 0, var5 - 2, 0);
- var1.drawLine(var5 - 2, 2, var5 - 2, var6 - 2);
- var1.drawLine(0, var6 - 2, var5 - 2, var6 - 2);
- } else {
- MetalUtils.drawDisabledBorder(var1, -1, 0, var5 + 1, var6);
- }
-
- if (!this.isFreeStanding) {
- var6 -= 2;
- --var5;
- return;
- }
- } else if (((BasicArrowButton)this).getDirection() == 7) {
- if (!this.isFreeStanding) {
- var6 += 2;
- ++var5;
- var1.translate(-1, 0);
- }
-
- var1.setColor(var3);
- var1.drawLine(6, 7, 6, 8);
- var1.drawLine(7, 6, 7, 9);
- var1.drawLine(8, 5, 8, 10);
- var1.drawLine(9, 4, 9, 11);
- if (var2) {
- var1.setColor(highlightColor);
- if (!var4) {
- var1.drawLine(1, 1, var5 - 1, 1);
- var1.drawLine(1, 1, 1, var6 - 3);
- }
-
- var1.drawLine(1, var6 - 1, var5 - 1, var6 - 1);
- var1.setColor(shadowColor);
- var1.drawLine(0, 0, var5 - 1, 0);
- var1.drawLine(0, 0, 0, var6 - 2);
- var1.drawLine(2, var6 - 2, var5 - 1, var6 - 2);
- } else {
- MetalUtils.drawDisabledBorder(var1, 0, 0, var5 + 1, var6);
- }
-
- if (!this.isFreeStanding) {
- var6 -= 2;
- --var5;
- var1.translate(1, 0);
- }
- }
-
- }
-
- public Dimension getPreferredSize() {
- if (((BasicArrowButton)this).getDirection() == 1) {
- return new Dimension(this.buttonWidth, this.buttonWidth - 2);
- } else if (((BasicArrowButton)this).getDirection() == 5) {
- return new Dimension(this.buttonWidth, this.buttonWidth - (this.isFreeStanding ? 1 : 2));
- } else if (((BasicArrowButton)this).getDirection() == 3) {
- return new Dimension(this.buttonWidth - (this.isFreeStanding ? 1 : 2), this.buttonWidth);
- } else {
- return ((BasicArrowButton)this).getDirection() == 7 ? new Dimension(this.buttonWidth - 2, this.buttonWidth) : new Dimension(0, 0);
- }
- }
-
- public Dimension getMinimumSize() {
- return this.getPreferredSize();
- }
-
- public Dimension getMaximumSize() {
- return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
- }
-
- public int getButtonWidth() {
- return this.buttonWidth;
- }
- }
-