package com.onaro.util.jfc.mixedvalue; import static com.onaro.util.jfc.mixedvalue.MixedValueConstants.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * Shows "Mixed values" when the value is null */ public class MixedValuePasswordField extends JPasswordField implements MouseListener, KeyListener { private static final long serialVersionUID = 1L; private boolean mixed; private Color regularColor; private Font italicFont; private Font plainFont; public MixedValuePasswordField() { this.regularColor = this.getForeground(); italicFont = getFont().deriveFont(Font.ITALIC); plainFont = getFont().deriveFont(Font.PLAIN); addMouseListener(this); addKeyListener(this); } public void setMixed(boolean mixed) { if (this.mixed == mixed) return; this.mixed = mixed; if (mixed) { super.setText(MIXED_VALUE); setForeground(UIManager.getColor("mixedValue.color")); //$NON-NLS-1$ setFont(italicFont); } else { setText(null); setForeground(regularColor); setFont(plainFont); } } public boolean isMixed() { return mixed; } public void mouseClicked(MouseEvent e) { setMixed(false); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void keyTyped(KeyEvent e) {} public void keyPressed(KeyEvent e) { setMixed(false); } public void keyReleased(KeyEvent e) {} }