| // Copyright 2013 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 org.chromium.base.CalledByNative; |
| import org.chromium.base.JNINamespace; |
| import org.chromium.content.browser.ContentViewCore; |
| |
| /** |
| * Plumbing for the different date/time dialog adapters. |
| */ |
| @JNINamespace("content") |
| class DateTimeChooserAndroid { |
| |
| private final long mNativeDateTimeChooserAndroid; |
| private final InputDialogContainer mInputDialogContainer; |
| |
| private DateTimeChooserAndroid(Context context, |
| long nativeDateTimeChooserAndroid) { |
| mNativeDateTimeChooserAndroid = nativeDateTimeChooserAndroid; |
| mInputDialogContainer = new InputDialogContainer(context, |
| new InputDialogContainer.InputActionDelegate() { |
| |
| @Override |
| public void replaceDateTime(double value) { |
| nativeReplaceDateTime(mNativeDateTimeChooserAndroid, value); |
| } |
| |
| @Override |
| public void cancelDateTimeDialog() { |
| nativeCancelDialog(mNativeDateTimeChooserAndroid); |
| } |
| }); |
| } |
| |
| private void showDialog(int dialogType, double dialogValue, |
| double min, double max, double step, |
| DateTimeSuggestion[] suggestions) { |
| mInputDialogContainer.showDialog(dialogType, dialogValue, min, max, step, suggestions); |
| } |
| |
| @CalledByNative |
| private static DateTimeChooserAndroid createDateTimeChooser( |
| ContentViewCore contentViewCore, |
| long nativeDateTimeChooserAndroid, |
| int dialogType, double dialogValue, |
| double min, double max, double step, |
| DateTimeSuggestion[] suggestions) { |
| DateTimeChooserAndroid chooser = |
| new DateTimeChooserAndroid( |
| contentViewCore.getContext(), |
| nativeDateTimeChooserAndroid); |
| chooser.showDialog(dialogType, dialogValue, min, max, step, suggestions); |
| return chooser; |
| } |
| |
| @CalledByNative |
| private static DateTimeSuggestion[] createSuggestionsArray(int size) { |
| return new DateTimeSuggestion[size]; |
| } |
| |
| /** |
| * @param array DateTimeSuggestion array that should get a new suggestion set. |
| * @param index Index in the array where to place a new suggestion. |
| * @param value Value of the suggestion. |
| * @param localizedValue Localized value of the suggestion. |
| * @param label Label of the suggestion. |
| */ |
| @CalledByNative |
| private static void setDateTimeSuggestionAt(DateTimeSuggestion[] array, int index, |
| double value, String localizedValue, String label) { |
| array[index] = new DateTimeSuggestion(value, localizedValue, label); |
| } |
| |
| @CalledByNative |
| private static void initializeDateInputTypes( |
| int textInputTypeDate, int textInputTypeDateTime, |
| int textInputTypeDateTimeLocal, int textInputTypeMonth, |
| int textInputTypeTime, int textInputTypeWeek) { |
| InputDialogContainer.initializeInputTypes( |
| textInputTypeDate, |
| textInputTypeDateTime, textInputTypeDateTimeLocal, |
| textInputTypeMonth, textInputTypeTime, textInputTypeWeek); |
| } |
| |
| private native void nativeReplaceDateTime(long nativeDateTimeChooserAndroid, |
| double dialogValue); |
| |
| private native void nativeCancelDialog(long nativeDateTimeChooserAndroid); |
| } |