com.brightcove.player.mediacontroller.buttons

## Class AbstractButtonController

- java.lang.Object
- - com.brightcove.player.event.AbstractComponent
  - - com.brightcove.player.mediacontroller.buttons.AbstractButtonController

- All Implemented Interfaces:
    AccessibilityListener, Component, ButtonController, RemoteControlKeyState
  Direct Known Subclasses:
    AudioTracksButtonController, CaptionsButtonController, CloseButtonController, FullScreenButtonController, LiveButtonController, PictureInPictureButtonController, PlayButtonController, PlayerOptionsButtonController, SeekButtonController, VRButtonController

      public abstract class AbstractButtonController
      extends AbstractComponent
      implements ButtonController, RemoteControlKeyState

  Provides a class for customers which consists of basic ButtonController method implementations to simplify adding customized media controls.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `AbstractButtonController.Visibility`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_AUDIO_TRACKS_BUTTON_ID`
    `static int` | `DEFAULT_CAPTIONS_BUTTON_ID`
    `static int` | `DEFAULT_FAST_FORWARD_BUTTON_ID`
    `static int` | `DEFAULT_FULL_SCREEN_BUTTON_ID`
    `static int` | `DEFAULT_LIVE_BUTTON_ID`
    `static int` | `DEFAULT_PLAY_BUTTON_ID`
    `static int` | `DEFAULT_REWIND_BUTTON_ID`
    `static int` | `DEFAULT_SEEK_BUTTON_ID`
    `protected java.util.Map<java.lang.String,java.lang.Object>` | `properties` A set of properties supplied when emitting events as part of button click handling.
    `protected java.util.List<ButtonState>` | `stateList` A list of states the button will sequence through as it is clicked.
    `protected BaseVideoView` | `videoView` The Brightcove video view, provided as a convenience to subclasses.

    - ### Fields inherited from class com.brightcove.player.event.AbstractComponent

      `eventEmitter, listenerTokens`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractButtonController(android.content.Context context, BaseVideoView videoView, android.view.View controlBar, int id, android.graphics.Typeface font)` Builds a complete controller.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `android.widget.Button` | `getButton()` Implements a getter for the button.
    `EventEmitter` | `getEventEmitter()` Implements a getter for the SDK event emitter.
    `android.graphics.Typeface` | `getFont()` Gets the button font.
    `int` | `getId()` Obtains the Android resource id for the button being controlled.
    `java.util.Map<java.lang.String,java.lang.Object>` | `getProperties()` Implements a default behavior to get the current properties without any additional processing.
    `java.util.List<ButtonState>` | `getStateList()` Gets the button state list providing information about the states associated with a button face.
    `int` | `getVisibilityState()` Gets the maintained visibility state for a button.
    `void` | `onAccessibilityStateChanged(boolean enabled)` Called back on change in the accessibility state.
    `boolean` | `onBack(android.view.KeyEvent event)` On back key actioned
    `boolean` | `onDpadCenter(android.view.KeyEvent event)` On dpad center key actioned
    `boolean` | `onDpadDown(android.view.KeyEvent event)` On dpad down key actioned
    `boolean` | `onDpadLeft(android.view.KeyEvent event)` On dpad left key actioned
    `boolean` | `onDpadRight(android.view.KeyEvent event)` On dpad right key actioned
    `boolean` | `onDpadUp(android.view.KeyEvent event)` On dpad up key actioned
    `boolean` | `onFastForward(android.view.KeyEvent event)` On fast forward key actioned
    `boolean` | `onHome(android.view.KeyEvent event)` On home key actioned
    `boolean` | `onMenu(android.view.KeyEvent event)` On menu key actioned
    `boolean` | `onPause(android.view.KeyEvent event)` On pause key actioned
    `boolean` | `onPlay(android.view.KeyEvent event)` On play key actioned
    `boolean` | `onPlayPause(android.view.KeyEvent event)` On play pause key actioned
    `boolean` | `onRewind(android.view.KeyEvent event)` On rewind key actioned
    `boolean` | `onSkipBackward(android.view.KeyEvent event)` On skip backward key actioned
    `boolean` | `onSkipForward(android.view.KeyEvent event)` On skip forward key actioned
    `void` | `setVisibility(int visibility)` Sets the button visibility.
    `void` | `syncStates()` Implements to update a state (toggle) button to display the correct glyph and content description for the current managed state value.

    - ### Methods inherited from class com.brightcove.player.event.AbstractComponent

      `addListener, addOnceListener, removeListener, removeListeners`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.brightcove.player.mediacontroller.buttons.ButtonController

      `getManagedState, removeListeners`

- - ### Field Detail

    - #### DEFAULT_AUDIO_TRACKS_BUTTON_ID

          public static final int DEFAULT_AUDIO_TRACKS_BUTTON_ID

    - #### DEFAULT_CAPTIONS_BUTTON_ID

          public static final int DEFAULT_CAPTIONS_BUTTON_ID

    - #### DEFAULT_FAST_FORWARD_BUTTON_ID

          public static final int DEFAULT_FAST_FORWARD_BUTTON_ID

    - #### DEFAULT_FULL_SCREEN_BUTTON_ID

          public static final int DEFAULT_FULL_SCREEN_BUTTON_ID

    - #### DEFAULT_LIVE_BUTTON_ID

          public static final int DEFAULT_LIVE_BUTTON_ID

    - #### DEFAULT_PLAY_BUTTON_ID

          public static final int DEFAULT_PLAY_BUTTON_ID

    - #### DEFAULT_REWIND_BUTTON_ID

          public static final int DEFAULT_REWIND_BUTTON_ID

    - #### DEFAULT_SEEK_BUTTON_ID

          public static final int DEFAULT_SEEK_BUTTON_ID

    - #### properties

          protected final java.util.Map<java.lang.String,java.lang.Object> properties

      A set of properties supplied when emitting events as part of button click handling.

    - #### stateList

          protected final java.util.List<ButtonState> stateList

      A list of states the button will sequence through as it is clicked.

    - #### videoView

          protected final BaseVideoView videoView

      The Brightcove video view, provided as a convenience to subclasses.

  - ### Constructor Detail

    - #### AbstractButtonController

          public AbstractButtonController(android.content.Context context,
                                          BaseVideoView videoView,
                                          android.view.View controlBar,
                                          int id,
                                          android.graphics.Typeface font)

      Builds a complete controller.
      Parameters:
        `context` - The given Android application context.
        `videoView` - The SDK video view used, possibly, to determine managed state asssociated with the button.
        `controlBar` - The layout widget to which the button will be added.
        `id` - The Android resource identifier for the button being controlled.

  - ### Method Detail

    - #### getFont

          @Nullable
          public android.graphics.Typeface getFont()

      Gets the button font. Used for testing.
      Returns:
        The button font.

    - #### getButton

          @Nullable
          public android.widget.Button getButton()

      Implements a getter for the button.
      Specified by:
        `getButton` in interface `ButtonController`
      Returns:
        null if the controller is not managing an Android Button widget, the managed button otherwise.
      See Also:
        `ButtonController.getButton()`

    - #### setVisibility

          public void setVisibility(int visibility)

      Sets the button visibility.
      Parameters:
        `visibility` - One of `View.VISIBLE`, `View.INVISIBLE`, or `View.GONE`.

    - #### getEventEmitter

          public EventEmitter getEventEmitter()

      Implements a getter for the SDK event emitter.
      Specified by:
        `getEventEmitter` in interface `ButtonController`
      Overrides:
        `getEventEmitter` in class `AbstractComponent`
      Returns:
        the EventEmitter used by this Component
      See Also:
        `ButtonController.getEventEmitter()`

    - #### getId

          public int getId()

      Description copied from interface: `ButtonController`
      Obtains the Android resource id for the button being controlled.
      Specified by:
        `getId` in interface `ButtonController`
      Returns:
        The Android resource id defining this button controller.

    - #### getProperties

          public java.util.Map<java.lang.String,java.lang.Object> getProperties()

      Implements a default behavior to get the current properties without any additional processing. Subclasses should override to tailor the properties emitted on a button click.
      Specified by:
        `getProperties` in interface `ButtonController`
      See Also:
        `ButtonController.getProperties()`

    - #### getStateList

          public java.util.List<ButtonState> getStateList()

      Gets the button state list providing information about the states associated with a button face.
      Specified by:
        `getStateList` in interface `ButtonController`
      Returns:
        a non-null but possibly empty list of button states for the controlled button.
      See Also:
        `ButtonController.getStateList()`

    - #### getVisibilityState

          public int getVisibilityState()

      Gets the maintained visibility state for a button. Defaults to View.VISIBLE but can be overridden based on events. An example is the caption button.
      Specified by:
        `getVisibilityState` in interface `ButtonController`
      Returns:
        The expected visibility state, one of View.GONE, View.INVISIBLE or View.VISIBLE.
      See Also:
        `ButtonController.getVisibilityState()`

    - #### syncStates

          public void syncStates()

      Implements to update a state (toggle) button to display the correct glyph and content description for the current managed state value.
      Specified by:
        `syncStates` in interface `ButtonController`
      See Also:
        `ButtonController.syncStates()`

    - #### onSkipBackward

          public boolean onSkipBackward(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On skip backward key actioned
      Specified by:
        `onSkipBackward` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onSkipForward

          public boolean onSkipForward(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On skip forward key actioned
      Specified by:
        `onSkipForward` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onHome

          public boolean onHome(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On home key actioned
      Specified by:
        `onHome` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onMenu

          public boolean onMenu(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On menu key actioned
      Specified by:
        `onMenu` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onBack

          public boolean onBack(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On back key actioned
      Specified by:
        `onBack` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onRewind

          public boolean onRewind(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On rewind key actioned
      Specified by:
        `onRewind` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onFastForward

          public boolean onFastForward(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On fast forward key actioned
      Specified by:
        `onFastForward` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onPlayPause

          public boolean onPlayPause(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On play pause key actioned
      Specified by:
        `onPlayPause` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onPause

          public boolean onPause(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On pause key actioned
      Specified by:
        `onPause` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onPlay

          public boolean onPlay(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On play key actioned
      Specified by:
        `onPlay` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onDpadCenter

          public boolean onDpadCenter(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On dpad center key actioned
      Specified by:
        `onDpadCenter` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onDpadRight

          public boolean onDpadRight(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On dpad right key actioned
      Specified by:
        `onDpadRight` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onDpadLeft

          public boolean onDpadLeft(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On dpad left key actioned
      Specified by:
        `onDpadLeft` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onDpadDown

          public boolean onDpadDown(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On dpad down key actioned
      Specified by:
        `onDpadDown` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onDpadUp

          public boolean onDpadUp(android.view.KeyEvent event)

      Description copied from interface: `RemoteControlKeyState`
      On dpad up key actioned
      Specified by:
        `onDpadUp` in interface `RemoteControlKeyState`
      Parameters:
        `event` - the android.view.KeyEvent
      Returns:
        true if the key event was handled, false otherwies.

    - #### onAccessibilityStateChanged

          public void onAccessibilityStateChanged(boolean enabled)

      Description copied from interface: `AccessibilityListener`
      Called back on change in the accessibility state.
      Specified by:
        `onAccessibilityStateChanged` in interface `AccessibilityListener`
      Parameters:
        `enabled` - Whether accessibility is enabled.