home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.metal;
-
- import com.sun.java.swing.Icon;
- import com.sun.java.swing.JComponent;
- import com.sun.java.swing.JSlider;
- import com.sun.java.swing.UIManager;
- import com.sun.java.swing.plaf.ColorUIResource;
- import com.sun.java.swing.plaf.ComponentUI;
- import com.sun.java.swing.plaf.basic.BasicSliderUI;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
-
- public class MetalSliderUI extends BasicSliderUI implements PropertyChangeListener {
- protected final int TICK_BUFFER = 4;
- protected boolean filledSlider = false;
- protected static Color thumbColor;
- protected static Color highlightColor;
- protected static Color darkShadowColor;
- protected static int trackWidth;
- protected static int tickLength;
- protected static Icon horizThumbIcon;
- protected static Icon vertThumbIcon;
- protected final String SLIDER_FILL = "JSlider.isFilled";
-
- public static ComponentUI createUI(JComponent var0) {
- return new MetalSliderUI();
- }
-
- public MetalSliderUI() {
- super((JSlider)null);
- }
-
- public void installUI(JComponent var1) {
- trackWidth = (Integer)UIManager.get("Slider.trackWidth");
- tickLength = (Integer)UIManager.get("Slider.majorTickLength");
- horizThumbIcon = UIManager.getIcon("Slider.horizontalThumbIcon");
- vertThumbIcon = UIManager.getIcon("Slider.verticalThumbIcon");
- super.installUI(var1);
- thumbColor = UIManager.getColor("Slider.thumb");
- highlightColor = UIManager.getColor("Slider.highlight");
- darkShadowColor = UIManager.getColor("Slider.darkShadow");
- super.scrollListener.setScrollByBlock(false);
- var1.addPropertyChangeListener(this);
- Object var2 = var1.getClientProperty("JSlider.isFilled");
- if (var2 != null) {
- this.filledSlider = (Boolean)var2;
- }
-
- }
-
- public void uninstallUI(JComponent var1) {
- var1.removePropertyChangeListener(this);
- super.uninstallUI(var1);
- }
-
- public void propertyChange(PropertyChangeEvent var1) {
- super.propertyChange(var1);
- String var2 = var1.getPropertyName();
- if (var2.equals("JSlider.isFilled")) {
- if (var1.getNewValue() != null) {
- this.filledSlider = (Boolean)var1.getNewValue();
- return;
- }
-
- this.filledSlider = false;
- }
-
- }
-
- public void paintThumb(Graphics var1) {
- Rectangle var2 = ((BasicSliderUI)this).getThumbRect();
- var1.translate(var2.x, var2.y);
- if (super.slider.getOrientation() == 0) {
- horizThumbIcon.paintIcon(super.slider, var1, 0, 0);
- } else {
- vertThumbIcon.paintIcon(super.slider, var1, 0, 0);
- }
-
- var1.translate(-var2.x, -var2.y);
- }
-
- public void paintTrack(Graphics var1) {
- Rectangle var2 = ((BasicSliderUI)this).getScrollTrackRect();
- Object var3 = !super.slider.isEnabled() ? MetalLookAndFeel.getControlShadow() : super.slider.getForeground();
- var1.translate(var2.x, var2.y);
- int var4 = 0;
- int var5 = 0;
- int var6 = 0;
- int var7 = 0;
- if (super.slider.getOrientation() == 0) {
- var4 = super.trackBuffer;
- var5 = var2.height - this.getThumbOverhang() - this.getTrackWidth();
- var6 = var2.width - 1 - super.trackBuffer;
- var7 = var2.height - this.getThumbOverhang() - 1;
- if (super.slider.isEnabled()) {
- MetalUtils.drawFlush3DBorder(var1, var4, var5, this.getTrackLength(), this.getTrackWidth());
- } else {
- Rectangle var8 = ((BasicSliderUI)this).getThumbRect();
- int var9 = var8.x + var8.width / 2;
- var1.setColor((Color)var3);
- var1.drawRect(var4, var5, this.getTrackLength(), this.getTrackWidth() - 2);
- if (this.filledSlider) {
- if (super.slider.isEnabled()) {
- var1.fillRect(var4, var5, var9 - var4, this.getTrackWidth() - 2);
- } else {
- var1.fillRect(var9, var5, var6 - var9, this.getTrackWidth() - 2);
- }
- }
- }
- } else {
- var4 = var2.width - this.getThumbOverhang() - this.getTrackWidth();
- var5 = super.trackBuffer;
- var6 = var2.width - this.getThumbOverhang() - 1;
- var7 = var2.height - 1 - super.trackBuffer;
- if (super.slider.isEnabled()) {
- MetalUtils.drawFlush3DBorder(var1, var4, var5, this.getTrackWidth(), this.getTrackLength());
- } else {
- Rectangle var16 = ((BasicSliderUI)this).getThumbRect();
- int var18 = var16.y + var16.height / 2;
- var1.setColor((Color)var3);
- var1.drawRect(var4, var5, this.getTrackWidth() - 2, this.getTrackLength());
- if (this.filledSlider) {
- if (super.slider.isEnabled()) {
- var1.fillRect(var4, var18, this.getTrackWidth() - 2, var7 - var18);
- } else {
- var1.fillRect(var4, var5, this.getTrackWidth() - 2, var18 - var4);
- }
- }
- }
- }
-
- if (!this.filledSlider) {
- if (super.slider.isEnabled()) {
- var1.setColor(super.slider.getForeground());
- if (super.slider.getOrientation() == 0) {
- var1.fillRect(var4 + 2, var5 + 2, this.getTrackLength() - 4, this.getTrackWidth() - 4);
- var1.setColor(MetalLookAndFeel.getPrimaryControl());
- var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var7 - 2);
- var1.drawLine(var4 + 1, var5 + 1, var6 - 2, var5 + 1);
- var1.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
- var1.drawLine(var4 + 2, var7 - 1, var6 - 1, var7 - 1);
- var1.drawLine(var6 - 1, var5 + 2, var6 - 1, var7 - 1);
- } else {
- var1.fillRect(var4 + 2, var5 + 2, this.getTrackWidth() - 4, this.getTrackLength() - 4);
- var1.setColor(MetalLookAndFeel.getPrimaryControl());
- var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var7 - 2);
- var1.drawLine(var4 + 1, var5 + 1, var6 - 2, var5 + 1);
- var1.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
- var1.drawLine(var6 - 1, var5 + 2, var6 - 1, var7 - 1);
- var1.drawLine(var4 + 2, var7 - 1, var6 - 1, var7 - 1);
- }
- }
- } else {
- ColorUIResource var17 = MetalLookAndFeel.getPrimaryControl();
- ColorUIResource var19 = MetalLookAndFeel.getPrimaryControlDarkShadow();
- var1.setColor(super.slider.getForeground());
- if (super.slider.getOrientation() == 0) {
- Rectangle var10 = ((BasicSliderUI)this).getThumbRect();
- int var11 = var10.x + var10.width / 2;
- if (!super.slider.getInverted()) {
- var1.fillRect(var4 + 2, var5 + 2, var11 - (var4 + 2), this.getTrackWidth() - 4);
- var1.setColor(var17);
- var1.drawLine(var4 + 2, var5 + 1, var11, var5 + 1);
- var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var7 - 1);
- var1.setColor(var19);
- var1.drawLine(var4 + 2, var7 - 1, var11, var7 - 1);
- } else {
- var1.fillRect(var11, var5 + 2, var6 - 1 - var11, this.getTrackWidth() - 4);
- var1.setColor(var17);
- var1.drawLine(var11, var5 + 1, var6 - 2, var5 + 1);
- var1.drawLine(var6 - 1, var5 + 1, var6 - 1, var7 - 1);
- var1.setColor(var19);
- var1.drawLine(var11, var7 - 1, var6 - 2, var7 - 1);
- }
- } else {
- Rectangle var20 = ((BasicSliderUI)this).getThumbRect();
- int var21 = var20.y + var20.height / 2;
- if (!super.slider.getInverted()) {
- var1.fillRect(var4 + 2, var21, this.getTrackWidth() - 4, var7 - 1 - var21);
- var1.setColor(var17);
- var1.drawLine(var4 + 1, var21, var4 + 1, var7 - 2);
- var1.drawLine(var4 + 1, var7 - 1, var6 - 1, var7 - 1);
- var1.setColor(var19);
- var1.drawLine(var6 - 1, var21, var6 - 1, var7 - 2);
- } else {
- var1.fillRect(var4 + 2, var5 + 2, this.getTrackWidth() - 4, var21 - (var5 + 2));
- var1.setColor(var17);
- var1.drawLine(var4 + 1, var5 + 2, var4 + 1, var21);
- var1.drawLine(var4 + 1, var5 + 1, var6 - 1, var5 + 1);
- var1.setColor(var19);
- var1.drawLine(var6 - 1, var5 + 2, var6 - 1, var21);
- }
- }
- }
-
- var1.translate(-var2.x, -var2.y);
- }
-
- public void paintFocus(Graphics var1) {
- if (super.slider.hasFocus()) {
- Rectangle var2 = super.slider.getBounds();
- var2.x = 0;
- var2.y = 0;
- if (super.slider.getBorder() != null) {
- var2 = ((BasicSliderUI)this).getFullContentArea();
- }
-
- var1.setColor(((BasicSliderUI)this).getFocusColor());
- var1.drawRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
- }
-
- }
-
- public void calculateThumbBounds() {
- byte var1 = 15;
- byte var2 = 16;
- if (super.slider.getOrientation() == 0) {
- int var5 = ((BasicSliderUI)this).xPositionForValue(super.slider.getValue()) - ((BasicSliderUI)this).getThumbRect().width / 2;
- int var6 = ((BasicSliderUI)this).getScrollTrackRect().y + ((BasicSliderUI)this).getScrollTrackRect().height - var2;
- ((BasicSliderUI)this).setThumbBounds(var5, var6, var1, var2);
- } else {
- int var3 = ((BasicSliderUI)this).yPositionForValue(super.slider.getValue()) - ((BasicSliderUI)this).getThumbRect().height / 2;
- int var4 = ((BasicSliderUI)this).getScrollTrackRect().x + ((BasicSliderUI)this).getScrollTrackRect().width - var2;
- ((BasicSliderUI)this).setThumbBounds(var4, var3, var2, var1);
- }
- }
-
- public int getTickSpace() {
- return super.slider.getOrientation() == 0 ? tickLength + 4 + 1 : tickLength + 4 + 3;
- }
-
- protected int getTrackWidth() {
- return trackWidth;
- }
-
- protected int getTrackLength() {
- ((BasicSliderUI)this).getFullContentArea();
- return super.slider.getOrientation() == 0 ? ((BasicSliderUI)this).getScrollTrackRect().width - super.trackBuffer * 2 : ((BasicSliderUI)this).getScrollTrackRect().height - super.trackBuffer * 2;
- }
-
- protected int getThumbOverhang() {
- return 4;
- }
-
- protected void scrollDueToClickInTrack(int var1) {
- ((BasicSliderUI)this).scrollByUnit(var1);
- }
-
- protected void paintMinorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
- var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
- var1.drawLine(var3, 4, var3, 4 + tickLength / 2);
- }
-
- protected void paintMajorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
- var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
- var1.drawLine(var3, 4, var3, 4 + (tickLength - 1));
- }
-
- protected void paintMinorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
- var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
- var1.drawLine(4, var3, 4 + tickLength / 2, var3);
- }
-
- protected void paintMajorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
- var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
- var1.drawLine(4, var3, 4 + tickLength, var3);
- }
- }
-