package org.limewire.ui.swing.painter.factories; import java.awt.Color; import java.awt.Paint; import javax.swing.JTextField; import org.jdesktop.application.Resource; import org.jdesktop.swingx.painter.AbstractPainter; import org.jdesktop.swingx.painter.CompoundPainter; import org.jdesktop.swingx.painter.Painter; import org.limewire.ui.swing.components.PromptTextField; import org.limewire.ui.swing.painter.BasicTextFieldPromptPainter; import org.limewire.ui.swing.painter.BorderPainter; import org.limewire.ui.swing.painter.ComponentBackgroundPainter; import org.limewire.ui.swing.painter.FilterPainter; import org.limewire.ui.swing.painter.BorderPainter.AccentType; import org.limewire.ui.swing.util.GuiUtils; import com.google.inject.Inject; public class TextFieldPainterFactory { @Resource private Color promptForeground; @Resource private int arcWidth; @Resource private int arcHeight; @Resource private Color border; @Resource private Color bevelLeft; @Resource private Color bevelTop1; @Resource private Color bevelTop2; @Resource private Color bevelRight; @Resource private Color bevelBottom; @Inject TextFieldPainterFactory() { GuiUtils.assignResources(this); } public AbstractPainter<JTextField> createBasicBackgroundPainter(AccentType accentType) { return new ComponentBackgroundPainter<JTextField>(Color.WHITE, border, bevelLeft, bevelTop1, bevelTop2, bevelRight, bevelBottom, arcWidth, arcHeight, accentType); } public AbstractPainter<JTextField> createBasicBackgroundPainter(AccentType accentType, Paint border) { return new ComponentBackgroundPainter<JTextField>(Color.WHITE, border, bevelLeft, bevelTop1, bevelTop2, bevelRight, bevelBottom, arcWidth, arcHeight, accentType); } /** * Creates a background painter for the specified text field using the * specified accent type. The returned painter includes an X icon that may * be clicked to clear the field, and is suitable for filter fields. */ public Painter<JTextField> createClearableBackgroundPainter( PromptTextField textField, AccentType accentType) { // Create filter painter. FilterPainter<JTextField> filterPainter = new FilterPainter<JTextField>( arcWidth, arcHeight); // Install filter painter on text field. filterPainter.install(textField); // Create compound painter using area and border painters. CompoundPainter<JTextField> painter = new CompoundPainter<JTextField>(); painter.setPainters(filterPainter, createBorderPainter(accentType)); painter.setCacheable(true); return painter; } public BasicTextFieldPromptPainter<JTextField> createBasicPromptPainter() { return new BasicTextFieldPromptPainter<JTextField>(promptForeground); } /** * Creates a BorderPainter using the specified accent type. */ private BorderPainter<JTextField> createBorderPainter(AccentType accentType) { return new BorderPainter<JTextField>(arcWidth, arcHeight, border, bevelLeft, bevelTop1, bevelTop2, bevelRight, bevelBottom, accentType); } }