summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/ui/PopupList.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/ui/PopupList.java')
-rw-r--r--src/com/android/gallery3d/ui/PopupList.java206
1 files changed, 0 insertions, 206 deletions
diff --git a/src/com/android/gallery3d/ui/PopupList.java b/src/com/android/gallery3d/ui/PopupList.java
deleted file mode 100644
index 248f50b25..000000000
--- a/src/com/android/gallery3d/ui/PopupList.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.ui;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.MeasureSpec;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
-import android.view.ViewTreeObserver.OnGlobalLayoutListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.BaseAdapter;
-import android.widget.ListView;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import com.android.gallery3d.R;
-
-import java.util.ArrayList;
-
-public class PopupList {
-
- public static interface OnPopupItemClickListener {
- public boolean onPopupItemClick(int itemId);
- }
-
- public static class Item {
- public final int id;
- public String title;
-
- public Item(int id, String title) {
- this.id = id;
- this.title = title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
- }
-
- private final Context mContext;
- private final View mAnchorView;
- private final ArrayList<Item> mItems = new ArrayList<Item>();
- private PopupWindow mPopupWindow;
- private ListView mContentList;
- private OnPopupItemClickListener mOnPopupItemClickListener;
- private int mPopupOffsetX;
- private int mPopupOffsetY;
- private int mPopupWidth;
- private int mPopupHeight;
-
- public PopupList(Context context, View anchorView) {
- mContext = context;
- mAnchorView = anchorView;
- }
-
- public void setOnPopupItemClickListener(OnPopupItemClickListener listener) {
- mOnPopupItemClickListener = listener;
- }
-
- public void addItem(int id, String title) {
- mItems.add(new Item(id, title));
- }
-
- public void clearItems() {
- mItems.clear();
- }
-
- private final PopupWindow.OnDismissListener mOnDismissListener =
- new PopupWindow.OnDismissListener() {
- @SuppressWarnings("deprecation")
- @Override
- public void onDismiss() {
- if (mPopupWindow == null) return;
- mPopupWindow = null;
- ViewTreeObserver observer = mAnchorView.getViewTreeObserver();
- if (observer.isAlive()) {
- // We used the deprecated function for backward compatibility
- // The new "removeOnGlobalLayoutListener" is introduced in API level 16
- observer.removeGlobalOnLayoutListener(mOnGLobalLayoutListener);
- }
- }
- };
-
- private final OnItemClickListener mOnItemClickListener =
- new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- if (mPopupWindow == null) return;
- mPopupWindow.dismiss();
- if (mOnPopupItemClickListener != null) {
- mOnPopupItemClickListener.onPopupItemClick((int) id);
- }
- }
- };
-
- private final OnGlobalLayoutListener mOnGLobalLayoutListener =
- new OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- if (mPopupWindow == null) return;
- updatePopupLayoutParams();
- // Need to update the position of the popup window
- mPopupWindow.update(mAnchorView,
- mPopupOffsetX, mPopupOffsetY, mPopupWidth, mPopupHeight);
- }
- };
-
- public void show() {
- if (mPopupWindow != null) return;
- mAnchorView.getViewTreeObserver()
- .addOnGlobalLayoutListener(mOnGLobalLayoutListener);
- mPopupWindow = createPopupWindow();
- updatePopupLayoutParams();
- mPopupWindow.setWidth(mPopupWidth);
- mPopupWindow.setHeight(mPopupHeight);
- mPopupWindow.showAsDropDown(mAnchorView, mPopupOffsetX, mPopupOffsetY);
- }
-
- private void updatePopupLayoutParams() {
- ListView content = mContentList;
- PopupWindow popup = mPopupWindow;
-
- Rect p = new Rect();
- popup.getBackground().getPadding(p);
-
- int maxHeight = mPopupWindow.getMaxAvailableHeight(mAnchorView) - p.top - p.bottom;
- mContentList.measure(
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
- MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST));
- mPopupWidth = content.getMeasuredWidth() + p.top + p.bottom;
- mPopupHeight = Math.min(maxHeight, content.getMeasuredHeight() + p.left + p.right);
- mPopupOffsetX = -p.left;
- mPopupOffsetY = -p.top;
- }
-
- private PopupWindow createPopupWindow() {
- PopupWindow popup = new PopupWindow(mContext);
- popup.setOnDismissListener(mOnDismissListener);
-
- popup.setBackgroundDrawable(mContext.getResources().getDrawable(
- R.drawable.menu_dropdown_panel_holo_dark));
-
- mContentList = new ListView(mContext, null,
- android.R.attr.dropDownListViewStyle);
- mContentList.setAdapter(new ItemDataAdapter());
- mContentList.setOnItemClickListener(mOnItemClickListener);
- popup.setContentView(mContentList);
- popup.setFocusable(true);
- popup.setOutsideTouchable(true);
-
- return popup;
- }
-
- public Item findItem(int id) {
- for (Item item : mItems) {
- if (item.id == id) return item;
- }
- return null;
- }
-
- private class ItemDataAdapter extends BaseAdapter {
- @Override
- public int getCount() {
- return mItems.size();
- }
-
- @Override
- public Object getItem(int position) {
- return mItems.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return mItems.get(position).id;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(mContext)
- .inflate(R.layout.popup_list_item, null);
- }
- TextView text = (TextView) convertView.findViewById(android.R.id.text1);
- text.setText(mItems.get(position).title);
- return convertView;
- }
- }
-}