# Class ShareService

java.lang.Object
com.codename1.ui.Command
com.codename1.share.ShareService

All Implemented Interfaces:
  `ActionListener<ActionEvent>`

Direct Known Subclasses:
  `EmailShare, FacebookShare, SMSShare`

public abstract class ShareService extends Command
This is an abstract sharing service.

- ## Field Summary

  ### Fields inherited from class Command

  `DESKTOP_MENU, DESKTOP_MENU_ABOUT, DESKTOP_MENU_APP, DESKTOP_MENU_EDIT, DESKTOP_MENU_FILE, DESKTOP_MENU_HELP, DESKTOP_MENU_PREFERENCES, DESKTOP_MENU_QUIT, DESKTOP_MENU_VIEW, DESKTOP_MENU_WINDOW`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ShareService(String name, Image icon)`
  Constructor with the service name and icon

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `actionPerformed(ActionEvent evt)`
  This method is called when the soft button/Menu item is clicked
  `abstract boolean`
  `canShareImage()`
  The implementing service needs to declare if it is capable to share an image
  `protected void`
  `deliverResult(ShareResult result)`
  Delivers a `ShareResult` to the registered listener exactly once.
  `void`
  `finish()`
  Once the share service has finished sharing it should call the finish method
  `Form`
  `getOriginal()`
  Gets the original Form
  `ShareResultListener`
  `getShareResultListener()`
  Returns the registered result listener (may be null).
  `void`
  `setImage(String image, String mime)`
  Sets the image to share, this is done by the ShareButton and shouldn't be used by the developers
  `void`
  `setMessage(String message)`
  Sets the message to share, this is done by the ShareButton and shouldn't be used by the developers
  `void`
  `setOriginalForm(Form original)`
  Sets the Original Form (this is the Form of the share button)
  `void`
  `setShareResultListener(ShareResultListener listener)`
  Registers a listener to be notified once when the share completes.
  `abstract void`
  `share(String text)`
  This is the sharing method which should be implemented by the service.
  `void`
  `share(String text, String image, String imageMimeType)`
  This is the image sharing method which should be implemented by the service, if the service returned true on the canShareImage() method Notice not all services are able to share text and image together, in this case the image sharing will be preferred by these services

  ### Methods inherited from class Command

  `create, createMaterial, equals, getClientProperty, getCommandName, getDesktopMenu, getDisabledIcon, getIcon, getIconFont, getIconGapMM, getId, getMaterialIcon, getMaterialIconSize, getPressedIcon, getRolloverIcon, hashCode, isDisposesDialog, isEnabled, putClientProperty, setCommandName, setDesktopMenu, setDisabledIcon, setDisposesDialog, setEnabled, setIcon, setIconFont, setIconGapMM, setMaterialIcon, setMaterialIconSize, setPressedIcon, setRolloverIcon, toString`

  ### Methods inherited from class Object

  `clone, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### ShareService

    public ShareService(String name, Image icon)

    Constructor with the service name and icon

    ###### Parameters

    - `name`: the service name

    - `icon`: the service icon

- ## Method Details

  - ### actionPerformed

    public void actionPerformed(ActionEvent evt)

    This method is called when the soft button/Menu item is clicked

    ###### Parameters

    - `evt`: the Event Object
    Specified by:
      `actionPerformed` in interface `ActionListener<ActionEvent>`
    Overrides:
      `actionPerformed` in class `Command`

  - ### share

    public abstract void share(String text)

    This is the sharing method which should be implemented by the service.

    ###### Parameters

    - `text`: text to share

  - ### share

    public void share(String text, String image, String imageMimeType)

    This is the image sharing method which should be implemented by the service, if the service returned true on the canShareImage() method Notice not all services are able to share text and image together, in this case the image sharing will be preferred by these services

    ###### Parameters

    - `text`: text to share

    - `image`: image to share

  - ### canShareImage

    public abstract boolean canShareImage()

    The implementing service needs to declare if it is capable to share an image

    ###### Returns

    true if the service can share images

  - ### setMessage

    public void setMessage(String message)

    Sets the message to share, this is done by the ShareButton and shouldn't be used by the developers

    ###### Parameters

    - `message`

  - ### setImage

    public void setImage(String image, String mime)

    Sets the image to share, this is done by the ShareButton and shouldn't be used by the developers

    ###### Parameters

    - `image`: the file path to the image

    - `mime`: the image mime type e.g. image/png, image/jpeg

  - ### setOriginalForm

    public void setOriginalForm(Form original)
    Sets the Original Form (this is the Form of the share button)

  - ### getOriginal

    public Form getOriginal()
    Gets the original Form

  - ### finish

    public void finish()
    Once the share service has finished sharing it should call the finish method

  - ### setShareResultListener

    public void setShareResultListener(ShareResultListener listener)

    Registers a listener to be notified once when the share completes.

    Set by `ShareButton` before the service is invoked. Subclasses normally do not call this directly.

  - ### getShareResultListener

    public ShareResultListener getShareResultListener()
    Returns the registered result listener (may be null).

  - ### deliverResult

    protected void deliverResult(ShareResult result)

    Delivers a `ShareResult` to the registered listener exactly once.

    Subclasses can call this to report a `DISMISSED` (user cancelled) or `FAILED` outcome. `finish()` already reports a default `SHARED_TO(commandName)` if no explicit result was delivered.