package com.jdroid.android.sample.ui.usecases;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.jdroid.android.exception.DialogErrorDisplayer;
import com.jdroid.android.fragment.AbstractFragment;
import com.jdroid.android.fragment.FragmentHelper;
import com.jdroid.android.sample.R;
import com.jdroid.android.utils.ToastUtils;
import com.jdroid.java.exception.AbstractException;
public class UseCasesFragment extends AbstractFragment {
private SampleUseCase sampleUseCase;
private static Boolean fail = false;
private CheckBox failCheckBox;
private static Boolean noListener = false;
private CheckBox noListenerCheckBox;
private static FragmentHelper.UseCaseTrigger useCaseTrigger = FragmentHelper.UseCaseTrigger.MANUAL;
private RadioGroup useCaseTriggerRadioGroup;
@Override
public Integer getContentFragmentLayout() {
return R.layout.usecases_fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sampleUseCase = new SampleUseCase();
sampleUseCase.setDelayInSeconds(5);
sampleUseCase.setFail(fail);
}
@Override
public void onStartUseCase() {
ToastUtils.showToastOnUIThread(R.string.onStartUseCase);
}
@Override
public void onFinishUseCase() {
ToastUtils.showToastOnUIThread(R.string.onFinishedUseCase);
}
@Override
public void onFinishFailedUseCase(AbstractException abstractException) {
ToastUtils.showToastOnUIThread(R.string.onFinishedFailUseCase);
DialogErrorDisplayer.markAsNotGoBackOnError(abstractException);
super.onFinishFailedUseCase(abstractException);
}
@Override
public void onStart() {
super.onStart();
registerUseCase(sampleUseCase, noListener ? null : this, useCaseTrigger);
}
@Override
public void onStop() {
super.onStop();
unregisterUseCase(sampleUseCase, this);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
failCheckBox = findView(R.id.fail);
failCheckBox.setChecked(fail);
failCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
fail = isChecked;
sampleUseCase.setFail(fail);
}
});
noListenerCheckBox = findView(R.id.noListener);
noListenerCheckBox.setChecked(noListener);
noListenerCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
noListener = isChecked;
}
});
useCaseTriggerRadioGroup = findView(R.id.useCaseTrigger);
if (useCaseTrigger.equals(FragmentHelper.UseCaseTrigger.ALWAYS)) {
((RadioButton)findView(R.id.alwaysUseCaseTrigger)).setChecked(true);
} else if (useCaseTrigger.equals(FragmentHelper.UseCaseTrigger.MANUAL)) {
((RadioButton)findView(R.id.manualUseCaseTrigger)).setChecked(true);
} else if (useCaseTrigger.equals(FragmentHelper.UseCaseTrigger.ONCE)) {
((RadioButton)findView(R.id.onceUseCaseTrigger)).setChecked(true);
}
useCaseTriggerRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.onceUseCaseTrigger) {
useCaseTrigger = FragmentHelper.UseCaseTrigger.ONCE;
} else if (checkedId == R.id.alwaysUseCaseTrigger) {
useCaseTrigger = FragmentHelper.UseCaseTrigger.ALWAYS;
} else if (checkedId == R.id.manualUseCaseTrigger) {
useCaseTrigger = FragmentHelper.UseCaseTrigger.MANUAL;
}
}
});
findView(R.id.execute).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
executeUseCase(sampleUseCase);
}
});
}
}