ThreeButtonDialog.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package epson.print;
  2. import android.app.AlertDialog;
  3. import android.app.Dialog;
  4. import android.content.DialogInterface;
  5. import android.os.Bundle;
  6. import android.view.KeyEvent;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.Button;
  11. import androidx.annotation.NonNull;
  12. import androidx.annotation.Nullable;
  13. import androidx.appcompat.app.AppCompatDialogFragment;
  14. import androidx.fragment.app.FragmentActivity;
  15. public class ThreeButtonDialog extends AppCompatDialogFragment {
  16. private static final String PARAM_LAYOUT_RESOURCE_ID = "layout_resource_id";
  17. public interface DialogCallback {
  18. void callback(int i);
  19. }
  20. @NonNull
  21. public static ThreeButtonDialog newInstance(int i) {
  22. ThreeButtonDialog threeButtonDialog = new ThreeButtonDialog();
  23. Bundle bundle = new Bundle();
  24. bundle.putInt(PARAM_LAYOUT_RESOURCE_ID, i);
  25. threeButtonDialog.setArguments(bundle);
  26. return threeButtonDialog;
  27. }
  28. public void onCreate(@Nullable Bundle bundle) {
  29. super.onCreate(bundle);
  30. setStyle(STYLE_NO_TITLE, 0);
  31. }
  32. public Dialog onCreateDialog(Bundle bundle) {
  33. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  34. LayoutInflater layoutInflater = getActivity().getLayoutInflater();
  35. Bundle arguments = getArguments();
  36. int i = arguments != null ? arguments.getInt(PARAM_LAYOUT_RESOURCE_ID) : 0;
  37. if (i == 0) {
  38. i = R.layout.dialog_three_button;
  39. }
  40. View inflate = layoutInflater.inflate(i, (ViewGroup) null);
  41. builder.setView(inflate);
  42. Button button = (Button) inflate.findViewById(R.id.button1);
  43. if (button != null) {
  44. button.setOnClickListener(new View.OnClickListener() {
  45. public void onClick(View view) {
  46. execCallbackAndDismiss(1);
  47. }
  48. });
  49. }
  50. Button button2 = (Button) inflate.findViewById(R.id.button2);
  51. if (button2 != null) {
  52. button2.setOnClickListener(new View.OnClickListener() {
  53. public void onClick(View view) {
  54. execCallbackAndDismiss(2);
  55. }
  56. });
  57. }
  58. Button button3 = (Button) inflate.findViewById(R.id.button3);
  59. if (button3 != null) {
  60. button3.setOnClickListener(new View.OnClickListener() {
  61. public void onClick(View view) {
  62. execCallbackAndDismiss(3);
  63. }
  64. });
  65. }
  66. AlertDialog create = builder.create();
  67. create.setOnKeyListener(new DialogInterface.OnKeyListener() {
  68. public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {
  69. return i == 84;
  70. }
  71. });
  72. setCancelable(false);
  73. return create;
  74. }
  75. private void execCallbackAndDismiss(int i) {
  76. DialogCallback dialogCallback = getDialogCallback();
  77. if (dialogCallback != null) {
  78. dialogCallback.callback(i);
  79. dismiss();
  80. }
  81. }
  82. private DialogCallback getDialogCallback() {
  83. FragmentActivity activity = getActivity();
  84. if (activity == null) {
  85. return null;
  86. }
  87. try {
  88. return (DialogCallback) activity;
  89. } catch (ClassCastException unused) {
  90. throw new ClassCastException(activity.toString() + " must implement ThreeButtonDialog.DialogCallback");
  91. }
  92. }
  93. }