blob: 4ef31f446e66864b2cf52ecfbb104727921e4d60 [file] [log] [blame]
// Copyright 2012 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.components.embedder_support.delegate;
import android.content.Context;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.ui.base.WindowAndroid;
/**
* ColorChooserAndroid communicates with the java ColorPickerDialog and the
* native color_chooser_android.cc
*/
@JNINamespace("web_contents_delegate_android")
public class ColorChooserAndroid {
private final ColorPickerDialog mDialog;
private final long mNativeColorChooserAndroid;
private ColorChooserAndroid(long nativeColorChooserAndroid, Context context, int initialColor,
ColorSuggestion[] suggestions) {
OnColorChangedListener listener = new OnColorChangedListener() {
@Override
public void onColorChanged(int color) {
mDialog.dismiss();
nativeOnColorChosen(mNativeColorChooserAndroid, color);
}
};
mNativeColorChooserAndroid = nativeColorChooserAndroid;
mDialog = new ColorPickerDialog(context, listener, initialColor, suggestions);
}
private void openColorChooser() {
mDialog.show();
}
@CalledByNative
public void closeColorChooser() {
mDialog.dismiss();
}
@CalledByNative
public static ColorChooserAndroid createColorChooserAndroid(long nativeColorChooserAndroid,
WindowAndroid windowAndroid, int initialColor, ColorSuggestion[] suggestions) {
if (windowAndroid == null) return null;
Context windowContext = windowAndroid.getContext().get();
if (WindowAndroid.activityFromContext(windowContext) == null) return null;
ColorChooserAndroid chooser = new ColorChooserAndroid(
nativeColorChooserAndroid, windowContext, initialColor, suggestions);
chooser.openColorChooser();
return chooser;
}
@CalledByNative
private static ColorSuggestion[] createColorSuggestionArray(int size) {
return new ColorSuggestion[size];
}
/**
* @param array ColorSuggestion array that should get a new suggestion added.
* @param index Index in the array where to place a new suggestion.
* @param color Color of the suggestion.
* @param label Label of the suggestion.
*/
@CalledByNative
private static void addToColorSuggestionArray(
ColorSuggestion[] array, int index, int color, String label) {
array[index] = new ColorSuggestion(color, label);
}
// Implemented in color_chooser_android.cc
private native void nativeOnColorChosen(long nativeColorChooserAndroid, int color);
}