package com.explodingpixels.macwidgets.plaf; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.plaf.basic.BasicTextFieldUI; import javax.swing.text.JTextComponent; import com.explodingpixels.macwidgets.WidgetBaseColors; /** * Creates a Heads Up Display (HUD) style text field, similar to that seen in various iApps (e.g. * iPhoto). * <br> * <img src="../../../../../graphics/HUDTextFieldUI.png"> */ public class HudTextFieldUI extends BasicTextFieldUI { private boolean isDarkColorScheme = true; private Color fontColor = WidgetBaseColors.DARK_FONT_COLOR; @Override public void installUI(JComponent c) { super.installUI(c); if (isDarkColorScheme) fontColor = WidgetBaseColors.DARK_FONT_COLOR; else fontColor = WidgetBaseColors.LIGHT_FONT_COLOR; JTextComponent textComponent = (JTextComponent) c; textComponent.setOpaque(false); textComponent.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(HudPaintingUtils.BORDER_COLOR), BorderFactory.createEmptyBorder(1, 2, 1, 2))); textComponent.setBackground(new Color(0, 0, 0, 0)); textComponent.setForeground(fontColor); textComponent.setFont(HudPaintingUtils.getHudFont()); textComponent.setSelectedTextColor(Color.BLACK); textComponent.setSelectionColor(fontColor); textComponent.setCaretColor(fontColor); } @Override protected void paintSafely(Graphics graphics) { ((Graphics2D) graphics).setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); super.paintSafely(graphics); } }