package novoda.com.sandbox; import android.app.*; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.EditText; public class SignInActivity extends Activity { private static final String ACTION = BuildConfig.APPLICATION_ID + ".SIGN_IN"; private static final int MINIMUM_INPUT_LENGTH = 4; private EditText userNameEditText; private EditText passwordEditText; private View submitButton; private AlertDialog invalidCredentialsDialog; public static Intent createIntent() { return new Intent(ACTION); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_in); userNameEditText = (EditText) findViewById(R.id.sign_in_activity_username_field); passwordEditText = (EditText) findViewById(R.id.sign_in_activity_password_field); userNameEditText.addTextChangedListener(signInEnablingSubmitTextWatcher); passwordEditText.addTextChangedListener(signInEnablingSubmitTextWatcher); invalidCredentialsDialog = new AlertDialog.Builder(SignInActivity.this).setMessage("Oops something went wrong, is your username and password more than 4 characters?") .setNeutralButton("ok", null) .create(); submitButton = findViewById(R.id.sign_in_activity_submit_button); submitButton.setEnabled(false); submitButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (credentialsAreInvalid()) { invalidCredentialsDialog.show(); } else { Application.setSignedIn(); finish(); } } }); } private boolean credentialsAreInvalid() { return userNameEditText.getText().toString().length() < MINIMUM_INPUT_LENGTH || passwordEditText.getText().toString().length() < MINIMUM_INPUT_LENGTH; } private TextWatcher signInEnablingSubmitTextWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // do nothing } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { submitButton.setEnabled(userNameEditText.getText().length() > 0 && passwordEditText.getText().length() > 0); } @Override public void afterTextChanged(Editable s) { // do nothing } }; }