# 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.

- ## 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
  `void`
  `finish()`
  Once the share service has finished sharing it should call the finish method
  `Form`
  `getOriginal()`
  Gets the original Form
  `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)
  `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, getDisabledIcon, getIcon, getIconFont, getIconGapMM, getId, getMaterialIcon, getMaterialIconSize, getPressedIcon, getRolloverIcon, hashCode, isDisposesDialog, isEnabled, putClientProperty, setCommandName, setDisabledIcon, setDisposesDialog, setEnabled, setIcon, setIconFont, setIconGapMM, setMaterialIcon, setMaterialIconSize, setPressedIcon, setRolloverIcon, toString`
  Modifier and Type
  Method
  Description
  `static Command`
  `create(String name, Image icon, ActionListener ev)`
  Creates a new command instance that encapsulates the action listener and details, the main value of this approach is in our ability to write commands using the shorthand lambda syntax of Java 8.
  `static Command`
  `createMaterial(String name, char icon, ActionListener ev)`
  Creates a new command instance that encapsulates the action listener and details, the main value of this approach is in our ability to write commands using the shorthand lambda syntax of Java 8.
  `boolean`
  `equals(Object obj)`
  compare two commands
  `Object`
  `getClientProperty(String key)`
  The client properties are a useful way to associate meta-data with a command without subclassing
  `String`
  `getCommandName()`
  gets the Command Name
  `Image`
  `getDisabledIcon()`
  Indicates the icon that is displayed on the button when the button is in the disabled state
  `Image`
  `getIcon()`
  Returns the icon representing the command
  `Font`
  `getIconFont()`

  ###### Returns

  `float`
  `getIconGapMM()`
  The gap between the text and the icon in millimeters or -1 for default
  `int`
  `getId()`
  Return the command ID
  `char`
  `getMaterialIcon()`

  ###### Returns

  `float`
  `getMaterialIconSize()`

  ###### Returns

  `Image`
  `getPressedIcon()`
  Indicates the icon that is displayed on the button when the button is in pressed state
  `Image`
  `getRolloverIcon()`
  Indicates the icon that is displayed on the button when the button is in rolled over state
  `int`
  `hashCode()`
  Allows storing commands in a vector/hashtable
  `boolean`
  `isDisposesDialog()`
  Indicates whether this command causes the dialog to dispose implicitly, defaults to true
  `boolean`
  `isEnabled()`
  Allows disabling/enabling the command
  `void`
  `putClientProperty(String key, Object value)`
  The client properties are a useful way to associate meta-data with a command without sub classing
  `void`
  `setCommandName(String command)`
  sets the Command name
  `void`
  `setDisabledIcon(Image disabledIcon)`
  Indicates the icon that is displayed on the button when the button is in the disabled state
  `void`
  `setDisposesDialog(boolean disposesDialog)`
  Indicates whether this command causes the dialog to dispose implicitly, defaults to true
  `void`
  `setEnabled(boolean enabled)`
  Allows disabling/enabling the command
  `void`
  `setIcon(Image icon)`
  Sets the icon for the command
  `void`
  `setIconFont(Font iconFont)`

  ###### Parameters

  `void`
  `setIconGapMM(float iconGapMM)`
  The gap between the text and the icon in millimeters or -1 for default
  `void`
  `setMaterialIcon(char materialIcon)`

  ###### Parameters

  `void`
  `setMaterialIconSize(float materialIconSize)`

  ###### Parameters

  `void`
  `setPressedIcon(Image pressedIcon)`
  Indicates the icon that is displayed on the button when the button is in pressed state
  `void`
  `setRolloverIcon(Image rolloverIcon)`
  Indicates the icon that is displayed on the button when the button is in rolled over state
  `String`
  `toString()`
  Returns a string representation of the object

  ### Methods inherited from class Object

  `clone, getClass, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  `final Class`
  `getClass()`
  Returns the runtime class of an object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes current thread to wait until another thread invokes the method or the method for this object.
  `final void`
  `wait(long timeout)`
  Causes current thread to wait until either another thread invokes the method or the method for this object, or a specified amount of time has elapsed.
  `final void`
  `wait(long timeout, int nanos)`
  Causes current thread to wait until another thread invokes the method or the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

- ## 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