package com.boardgamegeek.ui.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AlertDialog.Builder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager.LayoutParams;
import android.widget.CheckBox;
import android.widget.EditText;
import com.boardgamegeek.R;
import com.boardgamegeek.filterer.CollectionFilterer;
import com.boardgamegeek.filterer.CollectionNameFilter;
import butterknife.BindView;
import butterknife.ButterKnife;
public class CollectionNameFilterDialog implements CollectionFilterDialog {
@BindView(R.id.name) EditText filterTextView;
@BindView(R.id.starts_with) CheckBox startWithCheckBox;
@Override
public void createDialog(final Context context, final OnFilterChangedListener listener, CollectionFilterer filter) {
LayoutInflater inflater = LayoutInflater.from(context);
View layout = inflater.inflate(R.layout.dialog_collection_filter_name, null);
ButterKnife.bind(this, layout);
initializeUi(filter);
AlertDialog alertDialog = createAlertDialog(context, listener, layout);
requestFocus(alertDialog);
alertDialog.show();
}
private AlertDialog createAlertDialog(final Context context, final OnFilterChangedListener listener, View layout) {
return new Builder(context, R.style.Theme_bgglight_Dialog_Alert)
.setTitle(R.string.menu_collection_name)
.setPositiveButton(R.string.set, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (listener != null)
listener.addFilter(new CollectionNameFilter(context, filterTextView.getText(), startWithCheckBox.isChecked()));
}
})
.setNegativeButton(R.string.clear, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (listener != null) listener.removeFilter(new CollectionNameFilter(context).getType());
}
})
.setView(layout)
.create();
}
private void initializeUi(CollectionFilterer filter) {
CollectionNameFilter collectionNameFilter = (CollectionNameFilter) filter;
if (collectionNameFilter != null) {
filterTextView.setText(collectionNameFilter.getFilterText());
filterTextView.setSelection(0, filterTextView.getText().length());
startWithCheckBox.setChecked(collectionNameFilter.startsWith());
}
}
private void requestFocus(AlertDialog alertDialog) {
filterTextView.requestFocus();
Window window = alertDialog.getWindow();
if (window != null) window.setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
@Override
public int getType(Context context) {
return new CollectionNameFilter(context).getType();
}
}