1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.content.browser.input; 6 7 import android.content.Context; 8 9 import org.chromium.base.CalledByNative; 10 import org.chromium.base.JNINamespace; 11 import org.chromium.content.browser.ContentViewCore; 12 import org.chromium.ui.picker.DateTimeSuggestion; 13 import org.chromium.ui.picker.InputDialogContainer; 14 15 /** 16 * Plumbing for the different date/time dialog adapters. 17 */ 18 @JNINamespace("content") 19 class DateTimeChooserAndroid { 20 21 private final long mNativeDateTimeChooserAndroid; 22 private final InputDialogContainer mInputDialogContainer; 23 DateTimeChooserAndroid(Context context, long nativeDateTimeChooserAndroid)24 private DateTimeChooserAndroid(Context context, 25 long nativeDateTimeChooserAndroid) { 26 mNativeDateTimeChooserAndroid = nativeDateTimeChooserAndroid; 27 mInputDialogContainer = new InputDialogContainer(context, 28 new InputDialogContainer.InputActionDelegate() { 29 30 @Override 31 public void replaceDateTime(double value) { 32 nativeReplaceDateTime(mNativeDateTimeChooserAndroid, value); 33 } 34 35 @Override 36 public void cancelDateTimeDialog() { 37 nativeCancelDialog(mNativeDateTimeChooserAndroid); 38 } 39 }); 40 } 41 showDialog(int dialogType, double dialogValue, double min, double max, double step, DateTimeSuggestion[] suggestions)42 private void showDialog(int dialogType, double dialogValue, 43 double min, double max, double step, 44 DateTimeSuggestion[] suggestions) { 45 mInputDialogContainer.showDialog(dialogType, dialogValue, min, max, step, suggestions); 46 } 47 48 @CalledByNative createDateTimeChooser( ContentViewCore contentViewCore, long nativeDateTimeChooserAndroid, int dialogType, double dialogValue, double min, double max, double step, DateTimeSuggestion[] suggestions)49 private static DateTimeChooserAndroid createDateTimeChooser( 50 ContentViewCore contentViewCore, 51 long nativeDateTimeChooserAndroid, 52 int dialogType, double dialogValue, 53 double min, double max, double step, 54 DateTimeSuggestion[] suggestions) { 55 DateTimeChooserAndroid chooser = 56 new DateTimeChooserAndroid( 57 contentViewCore.getContext(), 58 nativeDateTimeChooserAndroid); 59 chooser.showDialog(dialogType, dialogValue, min, max, step, suggestions); 60 return chooser; 61 } 62 63 @CalledByNative createSuggestionsArray(int size)64 private static DateTimeSuggestion[] createSuggestionsArray(int size) { 65 return new DateTimeSuggestion[size]; 66 } 67 68 /** 69 * @param array DateTimeSuggestion array that should get a new suggestion set. 70 * @param index Index in the array where to place a new suggestion. 71 * @param value Value of the suggestion. 72 * @param localizedValue Localized value of the suggestion. 73 * @param label Label of the suggestion. 74 */ 75 @CalledByNative setDateTimeSuggestionAt(DateTimeSuggestion[] array, int index, double value, String localizedValue, String label)76 private static void setDateTimeSuggestionAt(DateTimeSuggestion[] array, int index, 77 double value, String localizedValue, String label) { 78 array[index] = new DateTimeSuggestion(value, localizedValue, label); 79 } 80 81 @CalledByNative initializeDateInputTypes( int textInputTypeDate, int textInputTypeDateTime, int textInputTypeDateTimeLocal, int textInputTypeMonth, int textInputTypeTime, int textInputTypeWeek)82 private static void initializeDateInputTypes( 83 int textInputTypeDate, int textInputTypeDateTime, 84 int textInputTypeDateTimeLocal, int textInputTypeMonth, 85 int textInputTypeTime, int textInputTypeWeek) { 86 InputDialogContainer.initializeInputTypes( 87 textInputTypeDate, 88 textInputTypeDateTime, textInputTypeDateTimeLocal, 89 textInputTypeMonth, textInputTypeTime, textInputTypeWeek); 90 } 91 nativeReplaceDateTime(long nativeDateTimeChooserAndroid, double dialogValue)92 private native void nativeReplaceDateTime(long nativeDateTimeChooserAndroid, 93 double dialogValue); 94 nativeCancelDialog(long nativeDateTimeChooserAndroid)95 private native void nativeCancelDialog(long nativeDateTimeChooserAndroid); 96 } 97