--- /dev/null
+package com.folioreader.model.quickaction;\r
+\r
+import android.content.Context;\r
+import android.graphics.drawable.BitmapDrawable;\r
+import android.graphics.drawable.Drawable;\r
+import android.view.LayoutInflater;\r
+import android.view.MotionEvent;\r
+import android.view.View;\r
+import android.view.View.OnTouchListener;\r
+import android.view.WindowManager;\r
+import android.widget.PopupWindow;\r
+\r
+/**\r
+ * Custom popup window.\r
+ *\r
+ * @author Lorensius W. L. T <lorenz@londatiga.net>\r
+ */\r
+public class PopupWindows {\r
+ protected Context mContext;\r
+ protected PopupWindow mWindow;\r
+ protected View mRootView;\r
+ protected Drawable mBackground = null;\r
+ protected WindowManager mWindowManager;\r
+\r
+ /**\r
+ * Constructor.\r
+ *\r
+ * @param context Context\r
+ */\r
+ public PopupWindows(Context context) {\r
+ mContext = context;\r
+ mWindow = new PopupWindow(context);\r
+\r
+ mWindow.setTouchInterceptor(new OnTouchListener() {\r
+ @Override\r
+ public boolean onTouch(View v, MotionEvent event) {\r
+ if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {\r
+ mWindow.dismiss();\r
+\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+ }\r
+ });\r
+\r
+ mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);\r
+ }\r
+\r
+ /**\r
+ * On dismiss\r
+ */\r
+ protected void onDismiss() {\r
+ }\r
+\r
+ /**\r
+ * On show\r
+ */\r
+ protected void onShow() {\r
+ }\r
+\r
+ /**\r
+ * On pre show\r
+ */\r
+ protected void preShow() {\r
+ if (mRootView == null)\r
+ throw new IllegalStateException("setContentView was not called with a view to display");\r
+\r
+ onShow();\r
+\r
+ if (mBackground == null) {\r
+ mWindow.setBackgroundDrawable(new BitmapDrawable());\r
+ } else {\r
+ mWindow.setBackgroundDrawable(mBackground);\r
+ }\r
+\r
+ mWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);\r
+ mWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);\r
+ mWindow.setTouchable(true);\r
+ mWindow.setFocusable(true);\r
+ mWindow.setOutsideTouchable(true);\r
+\r
+ mWindow.setContentView(mRootView);\r
+ }\r
+\r
+ /**\r
+ * Set background drawable.\r
+ *\r
+ * @param background Background drawable\r
+ */\r
+ public void setBackgroundDrawable(Drawable background) {\r
+ mBackground = background;\r
+ }\r
+\r
+ /**\r
+ * Set content view.\r
+ *\r
+ * @param root Root view\r
+ */\r
+ public void setContentView(View root) {\r
+ mRootView = root;\r
+\r
+ mWindow.setContentView(root);\r
+ }\r
+\r
+ /**\r
+ * Set content view.\r
+ *\r
+ * @param layoutResID Resource id\r
+ */\r
+ public void setContentView(int layoutResID) {\r
+ LayoutInflater inflator =\r
+ (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
+\r
+ setContentView(inflator.inflate(layoutResID, null));\r
+ }\r
+\r
+ /**\r
+ * Set listener on window dismissed.\r
+ */\r
+ public void setOnDismissListener(PopupWindow.OnDismissListener listener) {\r
+ mWindow.setOnDismissListener(listener);\r
+ }\r
+\r
+ /**\r
+ * Dismiss the popup window.\r
+ */\r
+ public void dismiss() {\r
+ mWindow.dismiss();\r
+ }\r
+}
\ No newline at end of file