| Index: content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDropdown.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDropdown.java b/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDropdown.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..97458f3099a5a625756eab22a49d69e48b70a2fb
|
| --- /dev/null
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDropdown.java
|
| @@ -0,0 +1,74 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.content.browser.input;
|
| +
|
| +import android.content.Context;
|
| +import android.graphics.Rect;
|
| +import android.view.View;
|
| +import android.widget.AdapterView;
|
| +
|
| +import org.chromium.content.browser.ContentViewCore;
|
| +import org.chromium.content.browser.RenderCoordinates;
|
| +import org.chromium.ui.DropdownAdapter;
|
| +import org.chromium.ui.DropdownItem;
|
| +import org.chromium.ui.DropdownPopupWindow;
|
| +
|
| +import java.util.List;
|
| +
|
| +/**
|
| + * Handles the dropdown popup for the <select> HTML tag support.
|
| + */
|
| +public class SelectPopupDropdown implements SelectPopup {
|
| +
|
| + private final ContentViewCore mContentViewCore;
|
| + private final Context mContext;
|
| +
|
| + private DropdownPopupWindow mDropdownPopupWindow;
|
| + private int mInitialSelection = -1;
|
| +
|
| + public SelectPopupDropdown(ContentViewCore contentViewCore, List<SelectPopupItem> items,
|
| + Rect bounds, int[] selected) {
|
| + mContentViewCore = contentViewCore;
|
| + mContext = mContentViewCore.getContext();
|
| + mDropdownPopupWindow = new DropdownPopupWindow(mContext,
|
| + mContentViewCore.getViewAndroidDelegate());
|
| + mDropdownPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
| + @Override
|
| + public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
| + int[] selectedIndices = {position};
|
| + mContentViewCore.selectPopupMenuItems(selectedIndices);
|
| + hide();
|
| + }
|
| + });
|
| + if (selected.length > 0) {
|
| + mInitialSelection = selected[0];
|
| + }
|
| + DropdownItem[] dropdownItems = items.toArray(new DropdownItem[items.size()]);
|
| + mDropdownPopupWindow.setAdapter(new DropdownAdapter(mContext, dropdownItems, null));
|
| + RenderCoordinates renderCoordinates = mContentViewCore.getRenderCoordinates();
|
| + float anchorX = renderCoordinates.fromPixToDip(
|
| + renderCoordinates.fromLocalCssToPix(bounds.left));
|
| + float anchorY = renderCoordinates.fromPixToDip(
|
| + renderCoordinates.fromLocalCssToPix(bounds.top));
|
| + float anchorWidth = renderCoordinates.fromPixToDip(
|
| + renderCoordinates.fromLocalCssToPix(bounds.right)) - anchorX;
|
| + float anchorHeight = renderCoordinates.fromPixToDip(
|
| + renderCoordinates.fromLocalCssToPix(bounds.bottom)) - anchorY;
|
| + mDropdownPopupWindow.setAnchorRect(anchorX, anchorY, anchorWidth, anchorHeight);
|
| + }
|
| +
|
| + @Override
|
| + public void show() {
|
| + mDropdownPopupWindow.show();
|
| + if (mInitialSelection >= 0) {
|
| + mDropdownPopupWindow.getListView().setSelection(mInitialSelection);
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void hide() {
|
| + mDropdownPopupWindow.dismiss();
|
| + }
|
| +}
|
|
|