• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 package android.support.v17.leanback.widget;
15 
16 import android.graphics.drawable.Drawable;
17 import android.text.TextUtils;
18 
19 import java.util.ArrayList;
20 
21 /**
22  * An action contains one or two lines of text, an optional image and an optional id. It may also
23  * be invoked by one or more keycodes.
24  */
25 public class Action {
26 
27     /** Indicates that an id has not been set. */
28     public static final long NO_ID = -1;
29 
30     private long mId = NO_ID;
31     private Drawable mIcon;
32     private CharSequence mLabel1;
33     private CharSequence mLabel2;
34     private ArrayList<Integer> mKeyCodes = new ArrayList<>();
35 
36     /**
37      * Constructor for an Action.
38      *
39      * @param id The id of the Action.
40      */
Action(long id)41     public Action(long id) {
42         this(id, "");
43     }
44 
45     /**
46      * Constructor for an Action.
47      *
48      * @param id The id of the Action.
49      * @param label The label to display for the Action.
50      */
Action(long id, CharSequence label)51     public Action(long id, CharSequence label) {
52         this(id, label, null);
53     }
54 
55     /**
56      * Constructor for an Action.
57      *
58      * @param id The id of the Action.
59      * @param label1 The label to display on the first line of the Action.
60      * @param label2 The label to display on the second line of the Action.
61      */
Action(long id, CharSequence label1, CharSequence label2)62     public Action(long id, CharSequence label1, CharSequence label2) {
63         this(id, label1, label2, null);
64     }
65 
66     /**
67      * Constructor for an Action.
68      *
69      * @param id The id of the Action.
70      * @param label1 The label to display on the first line of the Action.
71      * @param label2 The label to display on the second line of the Action.
72      * @param icon The icon to display for the Action.
73      */
Action(long id, CharSequence label1, CharSequence label2, Drawable icon)74     public Action(long id, CharSequence label1, CharSequence label2, Drawable icon) {
75         setId(id);
76         setLabel1(label1);
77         setLabel2(label2);
78         setIcon(icon);
79     }
80 
81     /**
82      * Sets the id for this Action.
83      */
setId(long id)84     public final void setId(long id) {
85         mId = id;
86     }
87 
88     /**
89      * Returns the id for this Action.
90      */
getId()91     public final long getId() {
92         return mId;
93     }
94 
95     /**
96      * Sets the first line label for this Action.
97      */
setLabel1(CharSequence label)98     public final void setLabel1(CharSequence label) {
99         mLabel1 = label;
100     }
101 
102     /**
103      * Returns the first line label for this Action.
104      */
getLabel1()105     public final CharSequence getLabel1() {
106         return mLabel1;
107     }
108 
109     /**
110      * Sets the second line label for this Action.
111      */
setLabel2(CharSequence label)112     public final void setLabel2(CharSequence label) {
113         mLabel2 = label;
114     }
115 
116     /**
117      * Returns the second line label for this Action.
118      */
getLabel2()119     public final CharSequence getLabel2() {
120         return mLabel2;
121     }
122 
123     /**
124      * Sets the icon drawable for this Action.
125      */
setIcon(Drawable icon)126     public final void setIcon(Drawable icon) {
127         mIcon = icon;
128     }
129 
130     /**
131      * Returns the icon drawable for this Action.
132      */
getIcon()133     public final Drawable getIcon() {
134         return mIcon;
135     }
136 
137     /**
138      * Adds a keycode used to invoke this Action.
139      */
addKeyCode(int keyCode)140     public final void addKeyCode(int keyCode) {
141         mKeyCodes.add(keyCode);
142     }
143 
144     /**
145      * Removes a keycode used to invoke this Action.
146      */
removeKeyCode(int keyCode)147     public final void removeKeyCode(int keyCode) {
148         mKeyCodes.remove(keyCode);
149     }
150 
151     /**
152      * Returns true if the Action should respond to the given keycode.
153      */
respondsToKeyCode(int keyCode)154     public final boolean respondsToKeyCode(int keyCode) {
155         return mKeyCodes.contains(keyCode);
156     }
157 
158     @Override
toString()159     public String toString(){
160         StringBuilder sb = new StringBuilder();
161         if (!TextUtils.isEmpty(mLabel1)) {
162             sb.append(mLabel1);
163         }
164         if (!TextUtils.isEmpty(mLabel2)) {
165             if (!TextUtils.isEmpty(mLabel1)) {
166                 sb.append(" ");
167             }
168             sb.append(mLabel2);
169         }
170         if (mIcon != null && sb.length() == 0) {
171             sb.append("(action icon)");
172         }
173         return sb.toString();
174     }
175 }
176