package com.mobmonkey.mobmonkeyandroid.utils; import android.content.Context; import android.graphics.Rect; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.EditText; import android.widget.ImageView; import android.widget.PopupWindow.OnDismissListener; import com.mobmonkey.mobmonkeyandroid.R; import com.mobmonkey.mobmonkeysdk.utils.MMPopupWindow; /** * @author Dezapp, LLC * */ public class MMTagPopupWindow extends MMPopupWindow implements OnDismissListener { private LayoutInflater layoutInflater; private ImageView ivPopupArrowUp; private EditText etCityState; private EditText etZipCode; private OnDismissListener dismissListener; public MMTagPopupWindow(Context context) { super(context); layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); setRootView(); } /* * (non-Javadoc) * @see com.mobmonkey.mobmonkeysdk.utils.MMPopupWindow#onDismiss() */ @Override public void onDismiss() { if(dismissListener != null) { dismissListener.onDismiss(); } } /** * */ private void setRootView() { mRootView = (ViewGroup) layoutInflater.inflate(R.layout.popup_tags, null); ivPopupArrowUp = (ImageView) mRootView.findViewById(R.id.ivpopuparrowup); etCityState = (EditText) mRootView.findViewById(R.id.etcitystate); etZipCode = (EditText) mRootView.findViewById(R.id.etzipcode); mRootView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); setContentView(mRootView); } /** * Show quickaction popup. Popup is automatically positioned, on top or bottom of anchor view. * */ public void show (View anchor, int yOffset) { preShow(); int[] location = new int[2]; anchor.getLocationOnScreen(location); Rect anchorRect = new Rect(location[0], location[1], location[0] + anchor.getWidth(), location[1] + anchor.getHeight()); mRootView.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); showArrow(anchorRect.centerX() - anchorRect.left); mWindow.setAnimationStyle(R.style.AnimationPopupLeft); mWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, anchorRect.left, anchorRect.bottom - yOffset); } /** * Show arrow * * @param requestedX distance from left screen */ private void showArrow(int requestedX) { final int arrowWidth = ivPopupArrowUp.getMeasuredWidth(); ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) ivPopupArrowUp.getLayoutParams(); param.leftMargin = requestedX - arrowWidth / 2; } /** * Set listener for window dismissed. This listener will only be fired if the quick action dialog is dismissed * by clicking outside the dialog or clicking on sticky item. */ public void setOnDismissListener(OnDismissListener listener) { setOnDismissListener(this); dismissListener = listener; } /** * * @return */ public String getCityState() { return etCityState.getText().toString(); } /** * * @return */ public String getZipCode() { return etZipCode.getText().toString(); } /** * Listener for window dismiss * */ public interface OnDismissListener { public abstract void onDismiss(); } }