-//
-// Copyright (c) 2013 Ford Motor Company
-//
-package com.smartdevicelink.proxy.rpc;
-
-import java.util.Hashtable;
-
-import com.smartdevicelink.proxy.RPCNotification;
-import com.smartdevicelink.proxy.constants.Names;
-import com.smartdevicelink.proxy.rpc.enums.ButtonEventMode;
-import com.smartdevicelink.proxy.rpc.enums.ButtonName;
-import com.smartdevicelink.util.DebugTool;
-
-public class OnButtonEvent extends RPCNotification {
-
- public OnButtonEvent() {
- super("OnButtonEvent");
- }
- public OnButtonEvent(Hashtable hash) {
- super(hash);
- }
- public ButtonName getButtonName() {
- Object obj = parameters.get(Names.buttonName);
- if (obj instanceof ButtonName) {
- return (ButtonName) obj;
- } else if (obj instanceof String) {
- ButtonName theCode = null;
- try {
- theCode = ButtonName.valueForString((String) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + Names.buttonName, e);
- }
- return theCode;
- }
- return null;
- }
- public void setButtonName( ButtonName buttonName ) {
- if (buttonName != null) {
- parameters.put(Names.buttonName, buttonName );
- }
- }
- public ButtonEventMode getButtonEventMode() {
- Object obj = parameters.get(Names.buttonEventMode);
- if (obj instanceof ButtonEventMode) {
- return (ButtonEventMode) obj;
- } else if (obj instanceof String) {
- ButtonEventMode theCode = null;
- try {
- theCode = ButtonEventMode.valueForString((String) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + Names.buttonEventMode, e);
- }
- return theCode;
- }
- return null;
- }
- public void setButtonEventMode( ButtonEventMode buttonEventMode ) {
- if (buttonEventMode != null) {
- parameters.put(Names.buttonEventMode, buttonEventMode );
- }
- }
-}
+package com.smartdevicelink.proxy.rpc;\r
+\r
+import java.util.Hashtable;\r
+\r
+import com.smartdevicelink.proxy.RPCNotification;\r
+import com.smartdevicelink.proxy.constants.Names;\r
+import com.smartdevicelink.proxy.rpc.enums.ButtonEventMode;\r
+import com.smartdevicelink.proxy.rpc.enums.ButtonName;\r
+import com.smartdevicelink.util.DebugTool;\r
+\r
+/**\r
+ * Notifies application that user has depressed or released a button to which\r
+ * the application has subscribed.</br> Further information about button events\r
+ * and button-presses can be found at {@linkplain SubscribeButton}.\r
+ * <p>\r
+ * </p>\r
+ * <b>HMI Status Requirements:</b>\r
+ * <ul>\r
+ * HMILevel:\r
+ * <ul>\r
+ * <li>The application will receive OnButtonEvent notifications for all\r
+ * subscribed buttons when HMILevel is FULL.</li>\r
+ * <li>The application will receive OnButtonEvent notifications for subscribed\r
+ * media buttons when HMILevel is LIMITED.</li>\r
+ * <li>Media buttons include SEEKLEFT, SEEKRIGHT, TUNEUP, TUNEDOWN, and\r
+ * PRESET_0-PRESET_9.</li>\r
+ * <li>The application will not receive OnButtonEvent notification when HMILevel\r
+ * is BACKGROUND.</li>\r
+ * </ul>\r
+ * AudioStreamingState:\r
+ * <ul>\r
+ * <li> Any </li>\r
+ * </ul>\r
+ * SystemContext:\r
+ * <ul>\r
+ * <li>MAIN, VR. In MENU, only PRESET buttons. In VR, pressing any subscribable\r
+ * button will cancel VR.</li>\r
+ * </ul>\r
+ * </ul>\r
+ * <p>\r
+ * <b>Parameter List:</b>\r
+ * <table border="1" rules="all">\r
+ * <tr>\r
+ * <th>Name</th>\r
+ * <th>Type</th>\r
+ * <th>Description</th>\r
+ * <th>Req</th>\r
+ * <th>Notes</th>\r
+ * <th>Applink Ver Available</th>\r
+ * </tr>\r
+ * <tr>\r
+ * <td>buttonName</td>\r
+ * <td>{@linkplain ButtonName}</td>\r
+ * <td>Name of the button which triggered this event</td>\r
+ * <td></td>\r
+ * <td></td>\r
+ * <td>SmartDeviceLink 1.0</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td>buttonEventMode</td>\r
+ * <td>{@linkplain ButtonEventMode}</td>\r
+ * <td>Indicats button was depressed (DOWN) or released (UP)</td>\r
+ * <td></td>\r
+ * <td></td>\r
+ * <td>SmartDeviceLink 1.0</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td>customButtonID</td>\r
+ * <td>Integer</td>\r
+ * <td>If ButtonName is ¡°CUSTOM_BUTTON", this references the integer ID passed\r
+ * by a custom button. (e.g. softButton ID)</td>\r
+ * <td>N</td>\r
+ * <td>Minvalue=0 Maxvalue=65536</td>\r
+ * <td>SmartDeviceLink 2.0</td>\r
+ * </tr>\r
+ * </table>\r
+ * </p>\r
+ * \r
+ * @since SmartDeviceLink 1.0\r
+ * \r
+ * @see SubscribeButton\r
+ * @see UnsubscribeButton\r
+ * \r
+ * \r
+ */\r
+public class OnButtonEvent extends RPCNotification {\r
+ /**\r
+ *Constructs a newly allocated OnButtonEvent object\r
+ */\r
+ public OnButtonEvent() {\r
+ super("OnButtonEvent");\r
+ }\r
+ /**\r
+ * <p>\r
+ * Constructs a newly allocated OnButtonEvent object indicated by the\r
+ * Hashtable parameter\r
+ * </p>\r
+ * \r
+ * @param hash\r
+ * The Hashtable to use\r
+ */ \r
+ public OnButtonEvent(Hashtable hash) {\r
+ super(hash);\r
+ }\r
+ /**\r
+ * <p>Returns <i>{@linkplain ButtonName}</i> the button's name</p>\r
+ * @return ButtonName Name of the button\r
+ */ \r
+ public ButtonName getButtonName() {\r
+ Object obj = parameters.get(Names.buttonName);\r
+ if (obj instanceof ButtonName) {\r
+ return (ButtonName) obj;\r
+ } else if (obj instanceof String) {\r
+ ButtonName theCode = null;\r
+ try {\r
+ theCode = ButtonName.valueForString((String) obj);\r
+ } catch (Exception e) {\r
+ DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + Names.buttonName, e);\r
+ }\r
+ return theCode;\r
+ }\r
+ return null;\r
+ }\r
+ /**\r
+ * <p>Set the button's name</p> \r
+ * @param buttonName name of the button\r
+ */ \r
+ public void setButtonName(ButtonName buttonName) {\r
+ if (buttonName != null) {\r
+ parameters.put(Names.buttonName, buttonName);\r
+ } else {\r
+ parameters.remove(Names.buttonName);\r
+ }\r
+ }\r
+ /**\r
+ * <p>Return <i>{@linkplain ButtonEventMode} indicates the button was depressed or released</i></p>\r
+ * @return ButtonEventMode the button depressed or released\r
+ */ \r
+ public ButtonEventMode getButtonEventMode() {\r
+ Object obj = parameters.get(Names.buttonEventMode);\r
+ if (obj instanceof ButtonEventMode) {\r
+ return (ButtonEventMode) obj;\r
+ } else if (obj instanceof String) {\r
+ ButtonEventMode theCode = null;\r
+ try {\r
+ theCode = ButtonEventMode.valueForString((String) obj);\r
+ } catch (Exception e) {\r
+ DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + Names.buttonEventMode, e);\r
+ }\r
+ return theCode;\r
+ }\r
+ return null;\r
+ }\r
+ /**\r
+ * <p> Set the event mode of the button,pressed or released\r
+ * @param buttonEventMode indicates the button is pressed or released\r
+ * @see ButtonEventMode\r
+ */ \r
+ public void setButtonEventMode(ButtonEventMode buttonEventMode) {\r
+ if (buttonEventMode != null) {\r
+ parameters.put(Names.buttonEventMode, buttonEventMode);\r
+ } else {\r
+ parameters.remove(Names.buttonEventMode);\r
+ }\r
+ }\r
+ public void setCustomButtonID(Integer customButtonID) {\r
+ if (customButtonID != null) {\r
+ parameters.put(Names.customButtonID, customButtonID);\r
+ } else {\r
+ parameters.remove(Names.customButtonID);\r
+ }\r
+ }\r
+ public Integer getCustomButtonID() {\r
+ return (Integer) parameters.get(Names.customButtonID);\r
+ }\r
+}\r