package org.emdev.ui.actions;
import org.sufficientlysecure.viewer.R;
import android.content.Context;
import android.support.v7.app.AlertDialog;
import org.emdev.utils.LengthUtils;
public class ActionDialogBuilder extends AlertDialog.Builder {
private final IActionController<?> actions;
private final Context context;
public ActionDialogBuilder(final Context context, final IActionController<?> actions) {
super(context);
this.actions = actions;
this.context = context;
}
public ActionDialogBuilder setPositiveButton(final int resId, final int actionId, final IActionParameter... params) {
final ActionEx action = actions.getOrCreateAction(actionId);
for (final IActionParameter ap : params) {
action.addParameter(ap);
}
super.setPositiveButton(resId, action);
return this;
}
public ActionDialogBuilder setPositiveButton(final int actionId, final IActionParameter... params) {
final ActionEx action = actions.getOrCreateAction(actionId);
for (final IActionParameter ap : params) {
action.addParameter(ap);
}
super.setPositiveButton(android.R.string.ok, action);
return this;
}
public ActionDialogBuilder setNegativeButton() {
super.setNegativeButton(android.R.string.cancel, actions.getOrCreateAction(R.id.actions_no_action));
return this;
}
public ActionDialogBuilder setNegativeButton(int resId) {
super.setNegativeButton(resId, actions.getOrCreateAction(R.id.actions_no_action));
return this;
}
public ActionDialogBuilder setNegativeButton(final int resId, final int actionId, final IActionParameter... params) {
final ActionEx action = actions.getOrCreateAction(actionId);
for (final IActionParameter ap : params) {
action.addParameter(ap);
}
super.setNegativeButton(android.R.string.cancel, action);
return this;
}
public ActionDialogBuilder setMultiChoiceItems(final int itemsId, final int actionId, final boolean... checkedItems) {
final ActionEx action = actions.getOrCreateAction(actionId);
super.setMultiChoiceItems(itemsId, LengthUtils.isNotEmpty(checkedItems) ? checkedItems : null, action);
return this;
}
public ActionDialogBuilder setMessage(final int msgId, final Object... args) {
setMessage(context.getResources().getString(msgId, args));
return this;
}
}