DateTimeChooserAndroid.java revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 5package org.chromium.content.browser.input; 6 7import android.content.Context; 8 9import org.chromium.base.CalledByNative; 10import org.chromium.base.JNINamespace; 11import org.chromium.content.browser.ContentViewCore; 12import org.chromium.ui.picker.DateTimeSuggestion; 13import org.chromium.ui.picker.InputDialogContainer; 14 15/** 16 * Plumbing for the different date/time dialog adapters. 17 */ 18@JNINamespace("content") 19class DateTimeChooserAndroid { 20 21 private final long mNativeDateTimeChooserAndroid; 22 private final InputDialogContainer mInputDialogContainer; 23 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 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 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 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 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 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 92 private native void nativeReplaceDateTime(long nativeDateTimeChooserAndroid, 93 double dialogValue); 94 95 private native void nativeCancelDialog(long nativeDateTimeChooserAndroid); 96} 97