package com.afollestad.materialdialogs.base; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Message; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * @author Aidan Follestad (afollestad) */ public class DialogBase extends AlertDialog implements DialogInterface.OnShowListener { protected final static String POSITIVE = "POSITIVE"; protected final static String NEGATIVE = "NEGATIVE"; protected final static String NEUTRAL = "NEUTRAL"; private OnShowListener mShowListener; protected DialogBase(Context context) { super(context); } protected void setVerticalMargins(View view, int topMargin, int bottomMargin) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams(); boolean changed = false; if (topMargin > -1 && params.topMargin != topMargin) { params.topMargin = topMargin; changed = true; } if (bottomMargin > -1 && params.bottomMargin != bottomMargin) { params.bottomMargin = bottomMargin; changed = true; } if (changed) view.setLayoutParams(params); } /** * @deprecated Not supported by the Material dialog. */ @Deprecated @Override public void setView(View view) { throw new RuntimeException("This method is not supported by the MaterialDialog."); } protected void setViewInternal(View view) { super.setView(view); } /** * @deprecated Not supported by the Material dialog. */ @Deprecated @Override public void setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom) { throw new RuntimeException("This method is not supported by the MaterialDialog."); } /** * @deprecated Use setContent() instead. */ @Deprecated @Override public void setMessage(CharSequence message) { throw new RuntimeException("This method is not supported by the MaterialDialog, use setContent() instead."); } /** * @deprecated Not supported by the Material dialog. */ @Deprecated @Override public void setCustomTitle(View customTitleView) { throw new RuntimeException("This method is not supported by the MaterialDialog."); } /** * @deprecated Not supported by the Material dialog. */ @Deprecated @Override public void setButton(int whichButton, CharSequence text, Message msg) { throw new RuntimeException("Use setActionButton(MaterialDialog.Button, CharSequence) instead."); } /** * @deprecated Not supported by the Material dialog. */ @Deprecated @Override public void setButton(int whichButton, CharSequence text, OnClickListener listener) { throw new RuntimeException("Use setActionButton(MaterialDialog.Button, CharSequence) instead."); } @Override public final void setOnShowListener(OnShowListener listener) { mShowListener = listener; } protected final void setOnShowListenerInternal() { super.setOnShowListener(this); } @Override public void onShow(DialogInterface dialog) { if (mShowListener != null) mShowListener.onShow(dialog); } protected void setBackgroundCompat(View view, Drawable d) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { //noinspection deprecation view.setBackgroundDrawable(d); } else { view.setBackground(d); } } protected void setTypeface(TextView text, Typeface t) { if (t == null) return; int flags = text.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG; text.setPaintFlags(flags); text.setTypeface(t); } }