/**
* Xtreme Media Player a cross-platform media player.
* Copyright (C) 2005-2011 Besmir Beqiri
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package xtrememp.ui.text;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Map;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.pushingpixels.substance.api.ComponentState;
import org.pushingpixels.substance.api.SubstanceLookAndFeel;
import static xtrememp.util.Utilities.tr;
/**
*
* @author Besmir Beqiri
*/
public class SearchTextField extends JPanel {
private final char faChar = 'S';
private final String searchText = tr("MainFrame.PlaylistManager.Filter") + " (Alt+" + faChar + ")";
private JTextField textField;
public SearchTextField(int columns) {
super(new BorderLayout());
textField = new PromptTextField(searchText, columns);
textField.setBackground(new Color(0, 0, 0, 64));
textField.setFont(getFont().deriveFont(Font.BOLD));
textField.setFocusAccelerator(faChar);
this.add(textField, BorderLayout.CENTER);
}
public JTextField getTextField() {
return textField;
}
private class PromptTextField extends JTextField {
private String promptText;
private Font promptFont;
private Insets insets;
private Map desktopHints;
public PromptTextField(String promptText) {
this(promptText, 0);
}
public PromptTextField(int columns) {
this(null, columns);
}
public PromptTextField(String promptText, int columns) {
super(columns);
this.promptText = promptText;
this.promptFont = getFont().deriveFont(Font.BOLD | Font.ITALIC);
this.insets = new Insets(3, 5, 3, 5);
Toolkit tk = Toolkit.getDefaultToolkit();
this.desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints"));
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
setText("");
}
}
});
}
@Override
public Insets getInsets() {
return insets;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (promptText != null && !isFocusOwner() && getText().isEmpty()) {
Graphics2D g2d = (Graphics2D) g.create();
if (desktopHints != null) {
g2d.addRenderingHints(desktopHints);
}
if (SubstanceLookAndFeel.isCurrentLookAndFeel()) {
g2d.setColor(SubstanceLookAndFeel.getCurrentSkin().
getColorScheme(this, ComponentState.ENABLED).getForegroundColor());
} else {
g2d.setColor(getDisabledTextColor());
}
g2d.setFont(promptFont);
g2d.drawString(promptText, insets.left, getHeight() - (insets.top + insets.bottom));
g2d.dispose();
}
}
}
}