package org.limewire.ui.swing.painter.factories;
import java.awt.Color;
import java.awt.GradientPaint;
import javax.swing.JComponent;
import javax.swing.JSlider;
import org.jdesktop.application.Resource;
import org.jdesktop.swingx.painter.AbstractPainter;
import org.limewire.ui.swing.painter.ProgressBarBackgroundPainter;
import org.limewire.ui.swing.painter.ProgressBarForegroundPainter;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.ui.swing.util.PainterUtils;
/**
* Factory for managing the painters that skin
* JSlider.
*/
public class SliderPainterFactory {
@Resource private Color mediaSliderBorder = PainterUtils.TRASPARENT;
@Resource private Color mediaSliderBackgroundGradientTop = PainterUtils.TRASPARENT;
@Resource private Color mediaSliderBackgroundGradientBottom = PainterUtils.TRASPARENT;
@Resource private Color mediaSliderForegroundGradientTop = PainterUtils.TRASPARENT;
@Resource private Color mediaSliderForegroundGradientBottom = PainterUtils.TRASPARENT;
SliderPainterFactory() {
GuiUtils.assignResources(this);
}
/**
* Creates a painter for the standard media slider background.
*/
public AbstractPainter<JComponent> createMediaBackgroundPainter() {
return new ProgressBarBackgroundPainter(
new GradientPaint(0,0,mediaSliderBackgroundGradientTop,0,1,mediaSliderBackgroundGradientBottom),
mediaSliderBorder, mediaSliderBorder);
}
/**
* Creates a foreground painter for a draggable media slider.
* This takes care of drawing the slider knob and current
* slider progress.
* <p>
* Should not be cachable so the slider nob can be repainted
* easily on mouse events.
*/
public AbstractPainter<JSlider> createMediaForegroundPainter() {
ProgressBarForegroundPainter<JSlider> painter = new ProgressBarForegroundPainter<JSlider>(
new GradientPaint(0,0,mediaSliderForegroundGradientTop,0,1,mediaSliderForegroundGradientBottom),
Color.GRAY, true);
painter.setCacheable(false);
return painter;
}
}