blob: 50cf45528a22e85740055be4c4549cebe6697c8c [file] [log] [blame]
package com.xtremelabs.robolectric.shadows;
import android.text.Editable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.widget.EditText;
import com.xtremelabs.robolectric.internal.Implementation;
import com.xtremelabs.robolectric.internal.Implements;
/**
* A shadow for EditText that provides support for listeners
*/
@SuppressWarnings({"UnusedDeclaration"})
@Implements(EditText.class)
public class ShadowEditText extends ShadowTextView {
private int maxLength = Integer.MAX_VALUE;
public ShadowEditText() {
focusable = true;
focusableInTouchMode = true;
}
@Override
public void applyAttributes() {
super.applyAttributes();
maxLength = attributeSet.getAttributeIntValue("android", "maxLength", Integer.MAX_VALUE);
}
@Override
@Implementation(i18nSafe = true)
public void setText(CharSequence str) {
if ( !TextUtils.isEmpty(str) && str.length() > maxLength) {
str = str.subSequence(0, maxLength);
}
super.setText(str);
}
@Override
@Implementation
public Editable getText() {
CharSequence text = super.getText();
if (!(text instanceof Editable)) {
return new SpannableStringBuilder(text);
}
return (Editable) text;
}
@Override
@Implementation
public void setSelection(int index) {
super.setSelection(index);
}
@Override
@Implementation
public void setSelection(int start, int end) {
super.setSelection(start, end);
}
}