package org.limewire.ui.swing.components.decorators;
import java.awt.Color;
import java.awt.GradientPaint;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JProgressBar;
import org.jdesktop.swingx.painter.AbstractPainter;
import org.jdesktop.swingx.painter.RectanglePainter;
import org.limewire.inject.LazySingleton;
import org.limewire.ui.swing.components.LimeProgressBar;
import org.limewire.ui.swing.painter.ProgressBarForegroundPainter;
import org.limewire.ui.swing.painter.factories.ProgressPainterFactory;
import com.google.inject.Inject;
import com.google.inject.Provider;
@LazySingleton
public class ProgressBarDecorator {
private final Provider<ProgressPainterFactory> painterFactoryProvider;
private ProgressPainterFactory painterFactory;
@Inject
ProgressBarDecorator(Provider<ProgressPainterFactory> painterFactory) {
this.painterFactoryProvider = painterFactory;
}
public void decoratePlain(LimeProgressBar bar) {
decorateGeneral(bar);
if(painterFactory == null)
painterFactory = painterFactoryProvider.get();
AbstractPainter<JProgressBar> foregroundPainter = painterFactory.createForegroundPainter();
AbstractPainter<JComponent> backgroundPainter = painterFactory.createBackgroundPainter();
bar.setForegroundPainter(foregroundPainter);
bar.setBackgroundPainter(backgroundPainter);
foregroundPainter.setCacheable(bar.hasCacheSupport());
backgroundPainter.setCacheable(bar.hasCacheSupport());
}
public static void decorateStaticBasic(LimeProgressBar bar) {
decorateGeneral(bar);
bar.setForegroundPainter(new ProgressBarForegroundPainter<JProgressBar>(
new GradientPaint(0,0,new Color(0xcf,0xf8,0x8f), 0,1, new Color(0xaa,0xcb,0x75)),
Color.GRAY));
bar.setBackgroundPainter(new RectanglePainter<JComponent>(Color.WHITE, new Color(0x27,0x27,0x27)));
}
public static void decorateStaticPro(LimeProgressBar bar) {
decorateGeneral(bar);
bar.setForegroundPainter(new ProgressBarForegroundPainter<JProgressBar>(
new GradientPaint(0,0,new Color(0x3883cf),0,1,new Color(0x1667a8)),
Color.GRAY, new Color(0x3d9dff)));
bar.setBackgroundPainter(new RectanglePainter<JComponent>(Color.WHITE, new Color(0x00316b)));
}
private static void decorateGeneral(LimeProgressBar bar) {
bar.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
}
}