package com.google.jstestdriver.idea.util;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.JTextComponent;
public class SwingUtils {
private SwingUtils() {}
public static void addTextChangeListener(final JTextComponent textComponent, final TextChangeListener textChangeListener) {
final String[] oldTextContainer = { textComponent.getText() };
textChangeListener.textChanged("", textComponent.getText());
textComponent.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
textChanged();
}
@Override
public void removeUpdate(DocumentEvent e) {
textChanged();
}
@Override
public void changedUpdate(DocumentEvent e) {
textChanged();
}
public void textChanged() {
String oldText = ObjectUtils.notNull(oldTextContainer[0], "");
String newText = ObjectUtils.notNull(textComponent.getText(), "");
if (!oldText.equals(newText)) {
textChangeListener.textChanged(oldText, newText);
oldTextContainer[0] = newText;
}
}
});
}
}