Package com.avaya.clientservices.collaboration

## Interface Collaboration

-     public interface Collaboration

  The Collaboration object provides access to collaboration related capabilities and actions.

  The Collaboration object is accessible via `CollaborationService` and provides a set of APIs that allow application developers to access different features and services provided by Avaya's various collaboration solutions.

  In general, the capabilities and the set of allowed operations are not only dependent on the capabilities of the conferencing server, but also on the specific privileges assigned to the local user on the collaboration call. A local user can have a moderator or presenter. Status updates concerning collaboration are reported through the `CollaborationListener` object.

  See Also:
    `CollaborationListener`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addListener​(CollaborationListener listener)` | Adds a new `CollaborationListener` listener to the collaboration.
    `void` | `end​(CollaborationCompletionHandler handler)` | Ends the collaboration session.
    `int` | `getCallId()` | Returns the unique numeric ID for call that is linked with this collaboration.
    `CollaborationCapabilities` | `getCapabilities()` | `CollaborationCapabilities` object containing set of collaboration capabilities.
    `Chat` | `getChat()` | Returns `Chat` object associated with the collaboration.
    `Capability` | `getChatCapability()` | Returns `Capability` object indicating whether in-conference chat is supported.
    `int` | `getCollaborationId()` | Returns the unique numeric ID associated with the particular collaboration object.
    `CollaborationRenderType` | `getCollaborationRenderType()` | Returns the `CollaborationRenderType` type of renderer.
    `ContentSharing` | `getContentSharing()` | Returns `ContentSharing` object associated with the collaboration.
    `Capability` | `getContentSharingCapability()` | Returns `Capability` object representing information whether the collaboration call supports content sharing.
    `LibraryManager` | `getLibraryManager()` | `LibraryManager` object associated with the collaboration.
    `LibrarySharing` | `getLibrarySharing()` | Returns `LibrarySharing` object provides a set of APIs which allow to access different features concerning library sharing.
    `Capability` | `getLibrarySharingCapability()` | `Capability` object indicating whether collaboration call supports library sharing.
    `MeetingMinutes` | `getMeetingMinutes()` | Returns `MeetingMinutes` object associated with the conference call.
    `Capability` | `getMeetingMinutesCapability()` | `Capability` object indicating whether collaboration call supports meeting minutes.
    `Capability` | `getNetworkLibraryCapability()` | `Capability` object indicating whether collaboration call supports network library.
    `void` | `getParticipants​(ParticipantsCompletionHandler handler)` | Return the participant list associated with the collaboration session.
    `Capability` | `getReceivingSharingControlCapability()` | Returns `Capability` object indicating whether it is possible to control receiving sharing through `pauseReceivingSharing(ReceivingSharingControlCompletionHandler)` and `resumeReceivingSharing(ReceivingSharingControlCompletionHandler)`.
    `Capability` | `getRetrieveParticipantListCapability()` | `Capability` object indicating whether the conference call can be queried to get the list of conference participants.
    `Slider` | `getSlider()` | Returns `Slider` object associated with the collaboration.
    `Capability` | `getSliderCapability()` | Returns `Capability` object indicating whether the slider feature is available.
    `Whiteboard` | `getWhiteboard()` | Return `Whiteboard` object associated with the collaboration.
    `Capability` | `getWhiteboardCapability()` | `Capability` object indicating whether whiteboard sharing can be started by local participant.
    `boolean` | `hasModeratorPrivilege()` | Indicates whether the current collaboration user has moderator privileges.
    `boolean` | `hasPresenterPrivilege()` | Indicates whether the current collaboration user has presenter privileges.
    `boolean` | `isCollaborationInitialized()` | A Boolean value indicating whether all starting events coming from the server have been processed or in another words, when local collaboration state is synchronized with the server.
    `boolean` | `isEjected()` | Indicates that the current user was ejected from the collaboration by the moderator.
    `boolean` | `isReceivingSharingPaused()` | Method checks whether receiving sharing is paused.
    `void` | `pauseReceivingSharing​(ReceivingSharingControlCompletionHandler handler)` | Pauses receiving certain collaboration sharing updates.
    `void` | `readCollaborationDetails​(CollaborationReadDetailsCompletionHandler handler)` | Returns the collaboration details associated with the collaboration session.
    `void` | `removeListener​(CollaborationListener listener)` | Removes a `CollaborationListener` listener from the collaboration.
    `void` | `resumeReceivingSharing​(ReceivingSharingControlCompletionHandler handler)` | Resumes receiving certain collaboration sharing updates.
    `void` | `start​(CollaborationCompletionHandler handler)` | Starts the collaboration session.

- - ### Method Detail

    - #### addListener

          void addListener​(CollaborationListener listener)

      Adds a new `CollaborationListener` listener to the collaboration.
      Parameters:
        `listener` - New collaboration listener that is being added.

    - #### removeListener

          void removeListener​(CollaborationListener listener)

      Removes a `CollaborationListener` listener from the collaboration.
      Parameters:
        `listener` - Collaboration listener instance that is removed from the collaboration.

    - #### start

          void start​(CollaborationCompletionHandler handler)

      Starts the collaboration session. Collaboration can not be started twice or during the collaboration starting or ending process.
      Parameters:
        `handler` - a block to be called when the operation is completed.

    - #### end

          void end​(CollaborationCompletionHandler handler)

      Ends the collaboration session. Collaboration can not be ended twice or during the collaboration starting or ending process.
      Parameters:
        `handler` - a block to be called when the operation is completed.

    - #### getCallId

          int getCallId()

      Returns the unique numeric ID for call that is linked with this collaboration. If there is no call (e.g. standalone collaboration), then it returns 0.
      Returns:
        The unique numeric ID for call that is linked with this collaboration.
      See Also:
        `Call`

    - #### getCollaborationId

          int getCollaborationId()

      Returns the unique numeric ID associated with the particular collaboration object.
      Returns:
        The unique numeric ID associated with the particular collaboration object.

    - #### hasPresenterPrivilege

          boolean hasPresenterPrivilege()

      Indicates whether the current collaboration user has presenter privileges.
      Collaboration participant can be promoted to presenter. In panel mode conference all users are presenters.
      Returns:
        true if the local user has presenter privilege.

    - #### hasModeratorPrivilege

          boolean hasModeratorPrivilege()

      Indicates whether the current collaboration user has moderator privileges.
      Collaboration participant can be promoted to moderator but the original moderator loses moderator control.
      Returns:
        true if the local user has moderator privilege.

    - #### isEjected

          boolean isEjected()

      Indicates that the current user was ejected from the collaboration by the moderator.
      Returns:
        true if the local user is ejected from collaboration by moderator.

    - #### isCollaborationInitialized

          boolean isCollaborationInitialized()

      A Boolean value indicating whether all starting events coming from the server have been processed or in another words, when local collaboration state is synchronized with the server.
      Returns:
        true if the collaboration is initialized.

    - #### isReceivingSharingPaused

          boolean isReceivingSharingPaused()

      Method checks whether receiving sharing is paused.

      Receive sharing can be controlled using `pauseReceivingSharing(ReceivingSharingControlCompletionHandler)` and `resumeReceivingSharing(ReceivingSharingControlCompletionHandler)` methods. Each of them changes the current state.

      Returns:
        true if receiving sharing is paused.

    - #### getContentSharingCapability

          Capability getContentSharingCapability()

      Returns `Capability` object representing information whether the collaboration call supports content sharing.
      Returns:
        capability information
      See Also:
        `ContentSharing`, `Capability`

    - #### getContentSharing

          ContentSharing getContentSharing()

      Returns `ContentSharing` object associated with the collaboration.

      This object provides set of APIs which allow to access different features concerning receiving and sharing content.

      Returns:
        content sharing object associated with the collaboration or null if content sharing is not supported by the collaboration.
      See Also:
        `ContentSharing`

    - #### getChatCapability

          Capability getChatCapability()

      Returns `Capability` object indicating whether in-conference chat is supported.
      `Chat` object accessible also via `Conference`. For more information see `Conference.getInConferenceChat()`
      Returns:
        capability information
      See Also:
        `Conference.getInConferenceChat()`, `Chat`, `Capability`

    - #### getChat

          Chat getChat()

      Returns `Chat` object associated with the collaboration.

      This object can be used to query for list of messages or send a new message. Object accessible also via `Conference.getInConferenceChat()` method.

      Returns:
        chat object associated with the collaboration or null if chat is not supported by the collaboration.
      See Also:
        `Conference.getInConferenceChat()`, `Chat`

    - #### getMeetingMinutesCapability

          Capability getMeetingMinutesCapability()

      `Capability` object indicating whether collaboration call supports meeting minutes.
      This object accessible also via `Conference`. For more information see `Conference.getMeetingMinutes()`
      Returns:
        capability information
      See Also:
        `Conference.getMeetingMinutes()`, `MeetingMinutes`, `Capability`

    - #### getMeetingMinutes

          MeetingMinutes getMeetingMinutes()

      Returns `MeetingMinutes` object associated with the conference call.

      This object can be used to query for a list of minutes or to add a new minute, or edit or remove an existing minute.

      Object accessible also via `Conference.getMeetingMinutes()` method.

      Returns:
        meeting minutes object associated with the collaboration or null if meeting minutes is not supported by the collaboration.
      See Also:
        `Conference.getMeetingMinutes()`, `MeetingMinutes`

    - #### getNetworkLibraryCapability

          Capability getNetworkLibraryCapability()

      `Capability` object indicating whether collaboration call supports network library.
      Returns:
        capability information
      See Also:
        `LibraryManager`, `Capability`

    - #### getLibraryManager

          LibraryManager getLibraryManager()

      `LibraryManager` object associated with the collaboration.
      This object provides a set of APIs which allow to access different features concerning network library management.
      Returns:
        library manager object associated with the collaboration.
      See Also:
        `LibraryManager`

    - #### getLibrarySharingCapability

          Capability getLibrarySharingCapability()

      `Capability` object indicating whether collaboration call supports library sharing.
      Returns:
        capability information.
      See Also:
        `LibrarySharing`, `Capability`

    - #### getLibrarySharing

          LibrarySharing getLibrarySharing()

      Returns `LibrarySharing` object provides a set of APIs which allow to access different features concerning library sharing.

      Returns:
        library sharing object associated with the collaboration or null if library sharing is not supported by the collaboration.
      See Also:
        `LibrarySharing`

    - #### getWhiteboardCapability

          Capability getWhiteboardCapability()

      `Capability` object indicating whether whiteboard sharing can be started by local participant. Note that `WhiteboardListener` object added to `Whiteboard` object may still receive notifications even if this capability is not allowed. E.g. if local user does not have the required permissions to start whiteboard sharing, but it was started by another collaboration participant.
      Returns:
        capability information.
      See Also:
        `Whiteboard`

    - #### getWhiteboard

          Whiteboard getWhiteboard()

      Return `Whiteboard` object associated with the collaboration.

      This object provides a set of APIs which allow one to access different features concerning receiving and sharing whiteboard.

      Returns:
        whiteboard object associated with the collaboration or null if whiteboard is not supported by the collaboration.
      See Also:
        `Whiteboard`

    - #### getSliderCapability

          Capability getSliderCapability()

      Returns `Capability` object indicating whether the slider feature is available.

      The capability is:

      - `NOT_SUPPORTED` if slider is not supported by this collaboration instance.
      - `INVALID_STATE` before the collaboration is started or after it has ended.
      - `NETWORK_UNAVAILABLE` if slider is temporarily unavailable due to connection loss.
      - `NOT_DENIED` otherwise.
      Returns:
        capability information.
      See Also:
        `Slider`

    - #### getSlider

          Slider getSlider()

      Returns `Slider` object associated with the collaboration.
      Returns:
        Slider object associated with the collaboration or null if the Slider is not supported by the collaboration.

    - #### getRetrieveParticipantListCapability

          Capability getRetrieveParticipantListCapability()

      `Capability` object indicating whether the conference call can be queried to get the list of conference participants. This object accessible also via `Conference`. For more information see `Conference.getRetrieveParticipantListCapability()`.
      Returns:
        capability information
      See Also:
        `Conference.getRetrieveParticipantListCapability()`, `Capability`

    - #### getCapabilities

          CollaborationCapabilities getCapabilities()

      `CollaborationCapabilities` object containing set of collaboration capabilities.
      Returns:
        collaboration capabilities object.

    - #### getCollaborationRenderType

          CollaborationRenderType getCollaborationRenderType()

      Returns the `CollaborationRenderType` type of renderer. The UI uses this information to draw the respective renderer.
      Returns:
        collaboration renderer type object.

    - #### getParticipants

          void getParticipants​(ParticipantsCompletionHandler handler)

      Return the participant list associated with the collaboration session.
      Depending on the capabilities of the collaboration session, the list of participants may not be provided (e.g., when presentation is supported through RTP video stream and not through the web collaboration interface). This method is added to support collaboration only sessions where there is no corresponding audio/video conference call.
      This method may be called when the collaboration session is associated with a conference call. The call/conference object may be queried to retrieve the full list of participants whereas this method may be used to retrieve the collaboration-only participants. Updates to the participant list (add, remove or update) are reported through the DataSetChangeListener instance registered with the DataSet object.
      Parameters:
        `handler` - a block to be called when the operation is completed.
      See Also:
        `ParticipantsCompletionHandler`

    - #### readCollaborationDetails

          void readCollaborationDetails​(CollaborationReadDetailsCompletionHandler handler)

      Returns the collaboration details associated with the collaboration session.
      Parameters:
        `handler` - a block to be called when the operation is completed.
      See Also:
        `CollaborationReadDetailsCompletionHandler`

    - #### getReceivingSharingControlCapability

          Capability getReceivingSharingControlCapability()

      Returns `Capability` object indicating whether it is possible to control receiving sharing through `pauseReceivingSharing(ReceivingSharingControlCompletionHandler)` and `resumeReceivingSharing(ReceivingSharingControlCompletionHandler)`.

      The capability is:

      - `NOT_SUPPORTED` if control is not supported.
      - `NETWORK_UNAVAILABLE` if slider is temporarily unavailable due to connection loss.
      - `NOT_DENIED` otherwise.
      Returns:
        capability information.

    - #### pauseReceivingSharing

          void pauseReceivingSharing​(ReceivingSharingControlCompletionHandler handler)

      Pauses receiving certain collaboration sharing updates.

      Currently stops content sharing image updates and whiteboard drawing updates.

      Can be used to reduce application event-handling workload in situations when sharing does not need to be processed (e.g. sharing-related UI components are hidden).

      Receiving sharing can be started again with `resumeReceivingSharing(ReceivingSharingControlCompletionHandler)` without losing any intermediate data (i.e. the up-to-date content sharing key frame and all whiteboard drawing events will be eventually received).

      Parameters:
        `handler` - completion handler instance used to report that the operation finished.

    - #### resumeReceivingSharing

          void resumeReceivingSharing​(ReceivingSharingControlCompletionHandler handler)

      Resumes receiving certain collaboration sharing updates.

      Starts receiving sharing updates previously paused by `pauseReceivingSharing(ReceivingSharingControlCompletionHandler)`.

      Parameters:
        `handler` - completion handler instance used to report that the operation finished.