Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / platform_tools / android / apps / viewer / src / main / java / org / skia / viewer / OptionAdapter.java
1 package org.skia.viewer;
2
3 import android.content.Context;
4 import android.widget.ArrayAdapter;
5 import android.widget.Filter;
6 import android.widget.Spinner;
7
8 import java.util.ArrayList;
9 import java.util.List;
10
11 public class OptionAdapter extends ArrayAdapter<String> {
12     private String mCurrentOption;
13     private List<String> mOptions;
14     private Filter mFilter = null;
15     private Spinner mSpinner;
16
17     public OptionAdapter(Context context, int resource, List<String> options, Spinner spinner) {
18         super(context, resource);
19         addAll(options);
20         mOptions = options;
21         mSpinner = spinner;
22     }
23
24     public void setCurrentOption(String currentOption) {
25         this.mCurrentOption = currentOption;
26     }
27
28     private class OptionFilter extends Filter {
29
30         @Override
31         protected FilterResults performFiltering(CharSequence constraint) {
32             final String pattern = constraint.toString().toLowerCase();
33             ArrayList<String> filteredOptions = new ArrayList<>();
34             for(String option : mOptions) {
35                 if (option.equals(mCurrentOption)
36                         || option.toLowerCase().indexOf(pattern) > -1) {
37                     filteredOptions.add(option);
38                 }
39             }
40             FilterResults results = new FilterResults();
41             results.values = filteredOptions;
42             results.count = filteredOptions.size();
43             return results;
44         }
45
46         @Override
47         protected void publishResults(CharSequence constraint, FilterResults results) {
48             clear();
49             List<String> filteredOptions = (List<String>) results.values;
50             addAll(filteredOptions);
51             // We set the selection to the current option to avoid unwanted option selection change
52             mSpinner.setSelection(filteredOptions.indexOf(mCurrentOption));
53             notifyDataSetChanged();
54         }
55     }
56
57     @Override
58     public Filter getFilter() {
59         if (mFilter == null) {
60             mFilter = new OptionFilter();
61         }
62         return mFilter;
63     }
64 }