Package net.sf.fmj.gui.customslider

Source Code of net.sf.fmj.gui.customslider.CustomSliderUI

package net.sf.fmj.gui.customslider;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicSliderUI;

import net.sf.fmj.gui.controlpanel.images.Images;

/**
* A slider look-and-feel that is nice(ish).
*
* @author Warren Bloomer
*
*/
public class CustomSliderUI extends BasicSliderUI {

  private final ImageIcon vertIcon;
  private final ImageIcon horizIcon;

  private Dimension vertIconSize = new Dimension(20, 20);
  private Dimension horizIconSize  = new Dimension(20, 20);

  public static ComponentUI createUI(JComponent component) {
    return new CustomSliderUI((JSlider)component);
  }
 
  private CustomSliderUI(JSlider component) {
    super(component);
   
    horizIcon = Images.get(Images.SLIDER_THUMB_HORIZ);
    horizIconSize = new Dimension(horizIcon.getIconWidth(), horizIcon.getIconHeight());
   
    vertIcon = Images.get(Images.SLIDER_THUMB_VERT);
    vertIconSize = new Dimension(vertIcon.getIconWidth(), vertIcon.getIconHeight());
  }
 
  public void installUI(JComponent c) {
    super.installUI(c);
  }
 
 
  public void paintThumb(Graphics g) {
//    super.paintThumb(g);
   
    Graphics2D g2d = (Graphics2D) g;
   
    int orientation = slider.getOrientation();
   
    Image image;
   
    switch (orientation) {
      case SwingConstants.VERTICAL:
        image = vertIcon.getImage();
        break;
       
      case SwingConstants.HORIZONTAL:
      default:
        image = horizIcon.getImage();
    }

    g2d.drawImage(image, thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height, null);
  }
 
  public void paintTrack(Graphics g) {
//    super.paintTrack(g);
   
    Graphics2D g2d = (Graphics2D) g;
   
    g2d.setColor(Color.LIGHT_GRAY);
   
//    logger.fine("trackLength: " + getTrackLength() + " + trackRect: " + trackRect);
//    logger.fine("thumbOverhang: " + getThumbOverhang() + ", trackBuffer: " + trackBuffer);
   
    float x = trackRect.x;
    float y = trackRect.y;
    float w = trackRect.width;
    float h = trackRect.height;
   
    int orientation = slider.getOrientation();
    if (orientation == SwingConstants.HORIZONTAL) {
      x -= trackBuffer;
      w += (2 * trackBuffer) - 1;
    }
    else {
      y -= trackBuffer;
      h += (2 * trackBuffer) - 1;
    }

//    if ()
    float arcw = 20;
    float arch = 20;
    RoundRectangle2D rectangle = new RoundRectangle2D.Float(x, y, w, h, arcw, arch);
   
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);   
    g2d.fill(rectangle);
   
    g2d.setColor(getShadowColor());
    if (orientation == SwingConstants.HORIZONTAL) {
      rectangle.setFrame(x, y, w-1, h-1);
    }
    else {
      rectangle.setFrame(x, y, w-1, h-1);
    }
    g2d.draw(rectangle);
  }
 
  public void paintFocus(Graphics g) {
    if (((CustomSlider)slider).getPaintFocus()) {
      super.paintFocus(g);
    }
  }
 
  protected Dimension getThumbSize() {
    int orientation = slider.getOrientation();
    if (orientation == SwingConstants.HORIZONTAL) {
//      horizThumbIcon = horizIcon;
      return horizIconSize;
    }
    else {
//      vertThumbIcon = vertIcon;
      return vertIconSize;
    }
  }
}
TOP

Related Classes of net.sf.fmj.gui.customslider.CustomSliderUI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.