package edu.ualberta.med.biobank.mvp.view.item;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.widgets.Text;
public class TextBox extends AbstractValueField<String> {
private final static String EMPTY_STRING = ""; //$NON-NLS-1$
private final ModifyListener modifyListener = new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
String value = !text.getText().isEmpty() ? text.getText() : null;
setValueInternal(value);
}
};
private Text text;
public synchronized void setText(Text text) {
unbindOldText();
this.text = text;
updateGui();
forwardEnabled(text);
forwardVisible(text);
text.addModifyListener(modifyListener);
// TODO: listen for disposal?
}
@Override
protected void updateGui() {
if (text != null) {
text.removeModifyListener(modifyListener);
String value = getValue();
text.setText(value != null ? value : EMPTY_STRING);
text.addModifyListener(modifyListener);
}
}
private void unbindOldText() {
if (text != null) {
text.removeModifyListener(modifyListener);
unforwardEnabled(text);
unforwardVisible(text);
}
}
}