DateTimeChooserAndroid.java revision 3551c9c881056c480085172ff9840cab31610854
1// Copyright (c) 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 org.chromium.base.CalledByNative;
8import org.chromium.base.JNINamespace;
9import org.chromium.content.browser.ContentViewCore;
10
11import android.content.Context;
12
13/**
14 * Plumbing for the different date/time dialog adapters.
15 */
16@JNINamespace("content")
17class DateTimeChooserAndroid {
18
19    private final int mNativeDateTimeChooserAndroid;
20    private final InputDialogContainer mInputDialogContainer;
21
22    private DateTimeChooserAndroid(Context context,
23            int nativeDateTimeChooserAndroid) {
24        mNativeDateTimeChooserAndroid = nativeDateTimeChooserAndroid;
25        mInputDialogContainer = new InputDialogContainer(context,
26                new InputDialogContainer.InputActionDelegate() {
27
28            @Override
29            public void replaceDateTime(
30                    int dialogType,
31                    int year, int month, int day, int hour, int minute,
32                    int second, int milli, int week) {
33                nativeReplaceDateTime(mNativeDateTimeChooserAndroid,
34                        dialogType,
35                        year, month, day, hour, minute, second, milli, week);
36            }
37
38            @Override
39            public void cancelDateTimeDialog() {
40                nativeCancelDialog(mNativeDateTimeChooserAndroid);
41            }
42        });
43    }
44
45    private void showDialog(int dialogType, int year, int month, int monthDay,
46                            int hour, int minute, int second, int milli,
47                            int week, double min, double max, double step) {
48        mInputDialogContainer.showDialog(
49            dialogType, year, month, monthDay,
50            hour, minute, second, milli, week, min, max, step);
51    }
52
53    @CalledByNative
54    private static DateTimeChooserAndroid createDateTimeChooser(
55            ContentViewCore contentViewCore,
56            int nativeDateTimeChooserAndroid, int dialogType,
57            int year, int month, int day,
58            int hour, int minute, int second, int milli, int week,
59            double min, double max, double step) {
60        DateTimeChooserAndroid chooser =
61                new DateTimeChooserAndroid(
62                        contentViewCore.getContext(),
63                        nativeDateTimeChooserAndroid);
64        chooser.showDialog(
65            dialogType, year, month, day, hour, minute, second, milli,
66            week, min, max, step);
67        return chooser;
68    }
69
70    @CalledByNative
71    private static void initializeDateInputTypes(
72            int textInputTypeDate, int textInputTypeDateTime,
73            int textInputTypeDateTimeLocal, int textInputTypeMonth,
74            int textInputTypeTime, int textInputTypeWeek) {
75        InputDialogContainer.initializeInputTypes(textInputTypeDate,
76                textInputTypeDateTime, textInputTypeDateTimeLocal,
77                textInputTypeMonth, textInputTypeTime, textInputTypeWeek);
78    }
79
80    private native void nativeReplaceDateTime(
81            int nativeDateTimeChooserAndroid, int dialogType,
82            int year, int month, int day, int hour, int minute,
83            int second, int milli, int week);
84
85    private native void nativeCancelDialog(int nativeDateTimeChooserAndroid);
86}
87