// 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);
}