package org.openlmis.core.view.fragment; import android.app.Dialog; import android.app.DialogFragment; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; import org.openlmis.core.R; import org.openlmis.core.view.widget.SingleClickButtonListener; import lombok.Setter; public class WarningDialogFragment extends DialogFragment { private static final String PARAM_MESSAGE_RES = "messageResId"; private static final String PARAM_POSITIVE_TEXT_RES = "positiveTextResId"; private static final String PARAM_NEGATIVE_TEXT_RES = "negativeTextResId"; @Setter private DialogDelegate delegate; public static WarningDialogFragment newInstance(int messageResId, int positiveTextResId, int negativeTextResId) { WarningDialogFragment dialog = new WarningDialogFragment(); Bundle bundle = new Bundle(); bundle.putInt(PARAM_MESSAGE_RES, messageResId); bundle.putInt(PARAM_POSITIVE_TEXT_RES, positiveTextResId); bundle.putInt(PARAM_NEGATIVE_TEXT_RES, negativeTextResId); dialog.setArguments(bundle); return dialog; } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contentView = inflater.inflate(R.layout.dialog_warning, container, false); initUI(contentView); return contentView; } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); return dialog; } @Override public void onStart() { super.onStart(); setDialogAttributes(); } private void initUI(View contentView) { int messageResId = getArguments().getInt(PARAM_MESSAGE_RES); int positiveResId = getArguments().getInt(PARAM_POSITIVE_TEXT_RES); int negativeResId = getArguments().getInt(PARAM_NEGATIVE_TEXT_RES); TextView tvMessage = (TextView) contentView.findViewById(R.id.dialog_message); Button btnNegative = (Button) contentView.findViewById(R.id.btn_cancel); Button btnPositive = (Button) contentView.findViewById(R.id.btn_del); SingleClickButtonListener singleClickButtonListener = getSingleClickButtonListener(); btnNegative.setOnClickListener(singleClickButtonListener); btnPositive.setOnClickListener(singleClickButtonListener); tvMessage.setText(messageResId); btnPositive.setText(positiveResId); btnNegative.setText(negativeResId); } private void setDialogAttributes() { WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.copyFrom(getDialog().getWindow().getAttributes()); params.width = (int) (getDialog().getContext().getResources().getDisplayMetrics().widthPixels * 0.8); getDialog().getWindow().setAttributes(params); } public SingleClickButtonListener getSingleClickButtonListener() { return new SingleClickButtonListener() { @Override public void onSingleClick(View v) { if (delegate != null && v.getId() == R.id.btn_del) { delegate.onPositiveClick(); } dismiss(); } }; } public interface DialogDelegate { void onPositiveClick(); } }