| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except |
| * in compliance with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package android.support.v17.leanback.widget; |
| |
| import android.graphics.drawable.Drawable; |
| import android.text.TextUtils; |
| import android.view.KeyEvent; |
| |
| import java.util.ArrayList; |
| |
| import static android.support.v17.leanback.widget.ObjectAdapter.NO_ID; |
| |
| /** |
| * An action contains one or two lines of text, an optional image and an optional id. It may also |
| * be invoked by one or more keycodes. |
| */ |
| public class Action { |
| |
| private long mId = NO_ID; |
| private Drawable mIcon; |
| private CharSequence mLabel1; |
| private CharSequence mLabel2; |
| private ArrayList mKeyCodes = new ArrayList(); |
| |
| /** |
| * Constructor for an Action. |
| * |
| * @param id The id of the Action. |
| */ |
| public Action(long id) { |
| this(id, ""); |
| } |
| |
| /** |
| * Constructor for an Action. |
| * |
| * @param id The id of the Action. |
| * @param label The label to display for the Action. |
| */ |
| public Action(long id, CharSequence label) { |
| this(id, label, null); |
| } |
| |
| /** |
| * Constructor for an Action. |
| * |
| * @param id The id of the Action. |
| * @param label1 The label to display on the first line of the Action. |
| * @param label2 The label to display on the second line of the Action. |
| */ |
| public Action(long id, CharSequence label1, CharSequence label2) { |
| this(id, label1, label2, null); |
| } |
| |
| /** |
| * Constructor for an Action. |
| * |
| * @param id The id of the Action. |
| * @param label1 The label to display on the first line of the Action. |
| * @param label2 The label to display on the second line of the Action. |
| * @param icon The icon to display for the Action. |
| */ |
| public Action(long id, CharSequence label1, CharSequence label2, Drawable icon) { |
| setId(id); |
| setLabel1(label1); |
| setLabel2(label2); |
| setIcon(icon); |
| } |
| |
| /** |
| * Sets the id for this Action. |
| */ |
| public final void setId(long id) { |
| mId = id; |
| } |
| |
| /** |
| * Returns the id for this Action. |
| */ |
| public final long getId() { |
| return mId; |
| } |
| |
| /** |
| * Sets the first line label for this Action. |
| */ |
| public final void setLabel1(CharSequence label) { |
| mLabel1 = label; |
| } |
| |
| /** |
| * Returns the first line label for this Action. |
| */ |
| public final CharSequence getLabel1() { |
| return mLabel1; |
| } |
| |
| /** |
| * Sets the second line label for this Action. |
| */ |
| public final void setLabel2(CharSequence label) { |
| mLabel2 = label; |
| } |
| |
| /** |
| * Returns the second line label for this Action. |
| */ |
| public final CharSequence getLabel2() { |
| return mLabel2; |
| } |
| |
| /** |
| * Sets the icon drawable for this Action. |
| */ |
| public final void setIcon(Drawable icon) { |
| mIcon = icon; |
| } |
| |
| /** |
| * Returns the icon drawable for this Action. |
| */ |
| public final Drawable getIcon() { |
| return mIcon; |
| } |
| |
| /** |
| * Adds a keycode used to invoke this Action. |
| */ |
| public final void addKeyCode(int keyCode) { |
| mKeyCodes.add(keyCode); |
| } |
| |
| /** |
| * Removes a keycode used to invoke this Action. |
| */ |
| public final void removeKeyCode(int keyCode) { |
| mKeyCodes.remove(keyCode); |
| } |
| |
| /** |
| * Returns true if the Action should respond to the given keycode. |
| */ |
| public final boolean respondsToKeyCode(int keyCode) { |
| return mKeyCodes.contains(keyCode); |
| } |
| |
| @Override |
| public String toString(){ |
| StringBuilder sb = new StringBuilder(); |
| if (!TextUtils.isEmpty(mLabel1)) { |
| sb.append(mLabel1); |
| } |
| if (!TextUtils.isEmpty(mLabel2)) { |
| if (!TextUtils.isEmpty(mLabel1)) { |
| sb.append(" "); |
| } |
| sb.append(mLabel2); |
| } |
| if (mIcon != null && sb.length() == 0) { |
| sb.append("(action icon)"); |
| } |
| return sb.toString(); |
| } |
| } |