Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: ui/android/java/src/org/chromium/ui/ColorSuggestionListAdapter.java

Issue 2398543003: Move Android view based ColorPicker from ui/ to components/ (Closed)
Patch Set: add owners Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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.ui;
6
7 import android.content.Context;
8 import android.graphics.Color;
9 import android.graphics.drawable.GradientDrawable;
10 import android.graphics.drawable.LayerDrawable;
11 import android.text.TextUtils;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.AbsListView;
15 import android.widget.BaseAdapter;
16 import android.widget.LinearLayout;
17
18 import org.chromium.base.ApiCompatibilityUtils;
19
20 /**
21 * The adapter used to populate ColorPickerSimple.
22 */
23 public class ColorSuggestionListAdapter extends BaseAdapter implements View.OnCl ickListener {
24 private Context mContext;
25 private ColorSuggestion[] mSuggestions;
26 private OnColorSuggestionClickListener mListener;
27
28 /**
29 * The callback used to indicate the user has clicked on a suggestion.
30 */
31 public interface OnColorSuggestionClickListener {
32
33 /**
34 * Called upon a click on a suggestion.
35 *
36 * @param suggestion The suggestion that was clicked.
37 */
38 void onColorSuggestionClick(ColorSuggestion suggestion);
39 }
40
41 private static final int COLORS_PER_ROW = 4;
42
43 ColorSuggestionListAdapter(Context context, ColorSuggestion[] suggestions) {
44 mContext = context;
45 mSuggestions = suggestions;
46 }
47
48 /**
49 * Sets the listener that will be notified upon a click on a suggestion.
50 */
51 public void setOnColorSuggestionClickListener(OnColorSuggestionClickListener listener) {
52 mListener = listener;
53 }
54
55 /**
56 * Sets up the color button to represent a color suggestion.
57 *
58 * @param button The button view to set up.
59 * @param index The index of the suggestion in mSuggestions.
60 */
61 private void setUpColorButton(View button, int index) {
62 if (index >= mSuggestions.length) {
63 button.setTag(null);
64 button.setContentDescription(null);
65 button.setVisibility(View.INVISIBLE);
66 return;
67 }
68 button.setTag(mSuggestions[index]);
69 button.setVisibility(View.VISIBLE);
70 ColorSuggestion suggestion = mSuggestions[index];
71 LayerDrawable layers = (LayerDrawable) button.getBackground();
72 GradientDrawable swatch =
73 (GradientDrawable) layers.findDrawableByLayerId(R.id.color_butto n_swatch);
74 swatch.setColor(suggestion.mColor);
75 String description = suggestion.mLabel;
76 if (TextUtils.isEmpty(description)) {
77 description = String.format("#%06X", (0xFFFFFF & suggestion.mColor)) ;
78 }
79 button.setContentDescription(description);
80 button.setOnClickListener(this);
81 }
82
83 @Override
84 public void onClick(View v) {
85 if (mListener == null) {
86 return;
87 }
88 ColorSuggestion suggestion = (ColorSuggestion) v.getTag();
89 if (suggestion == null) {
90 return;
91 }
92 mListener.onColorSuggestionClick(suggestion);
93 }
94
95 @Override
96 public View getView(int position, View convertView, ViewGroup parent) {
97 LinearLayout layout;
98 if (convertView instanceof LinearLayout) {
99 layout = (LinearLayout) convertView;
100 } else {
101 layout = new LinearLayout(mContext);
102 layout.setLayoutParams(new AbsListView.LayoutParams(
103 AbsListView.LayoutParams.MATCH_PARENT,
104 AbsListView.LayoutParams.WRAP_CONTENT));
105 layout.setOrientation(LinearLayout.HORIZONTAL);
106 layout.setBackgroundColor(Color.WHITE);
107 int buttonHeight =
108 mContext.getResources().getDimensionPixelOffset(R.dimen.colo r_button_height);
109 for (int i = 0; i < COLORS_PER_ROW; ++i) {
110 View button = new View(mContext);
111 LinearLayout.LayoutParams layoutParams =
112 new LinearLayout.LayoutParams(0, buttonHeight, 1f);
113 ApiCompatibilityUtils.setMarginStart(layoutParams, -1);
114 if (i == COLORS_PER_ROW - 1) {
115 ApiCompatibilityUtils.setMarginEnd(layoutParams, -1);
116 }
117 button.setLayoutParams(layoutParams);
118 button.setBackgroundResource(R.drawable.color_button_background) ;
119 layout.addView(button);
120 }
121 }
122 for (int i = 0; i < COLORS_PER_ROW; ++i) {
123 setUpColorButton(layout.getChildAt(i), position * COLORS_PER_ROW + i );
124 }
125 return layout;
126 }
127
128 @Override
129 public long getItemId(int position) {
130 return position;
131 }
132
133 @Override
134 public Object getItem(int position) {
135 return null;
136 }
137
138 @Override
139 public int getCount() {
140 return (mSuggestions.length + COLORS_PER_ROW - 1) / COLORS_PER_ROW;
141 }
142 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698