package com.onaro.util.jfc.mixedvalue; import javax.swing.*; import java.awt.*; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; /** * Shows "Mixed values" when the value is null */ public class MixedValueTextArea extends JTextArea implements FocusListener{ private static final long serialVersionUID = 1L; private String mixedValueText; private Color regularColor; private Font italicFont; private Font plainFont; public MixedValueTextArea(String mixedValueText, int rows, int columns) { super(rows,columns); this.mixedValueText = mixedValueText; this.regularColor = this.getForeground(); italicFont = getFont().deriveFont(Font.ITALIC); plainFont = getFont().deriveFont(Font.PLAIN); setMixed(); addFocusListener(this); } private void setMixed() { super.setText(mixedValueText); setForeground(UIManager.getColor("mixedValue.color")); //$NON-NLS-1$ setFont(italicFont); } public void focusGained(FocusEvent e) { if (mixedValueText.equals(super.getText()) && isFocusOwner()) { setText(null); } } public void focusLost(FocusEvent e) { //do nothing } public String getText() { String text = super.getText(); return text.equals(mixedValueText) ? null : text; } public void setText(String text){ if(text == null){ text = mixedValueText; setMixed(); }else{ setNormal(); } super.setText(text); } private void setNormal() { setForeground(regularColor); setFont(plainFont); } }