Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / model / quickaction / PopupWindows.java
diff --git a/Android/folioreader/src/main/java/com/folioreader/model/quickaction/PopupWindows.java b/Android/folioreader/src/main/java/com/folioreader/model/quickaction/PopupWindows.java
new file mode 100755 (executable)
index 0000000..25db41a
--- /dev/null
@@ -0,0 +1,131 @@
+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