Implement most of the features of TextField