# Class OnOffSwitch

java.lang.Object
com.codename1.ui.Component
com.codename1.ui.Container
com.codename1.components.OnOffSwitch

All Implemented Interfaces:
  `Animation, Editable, ActionSource, StyleListener, Iterable<Component>`

public class OnOffSwitch extends Container implements ActionSource
The on/off switch is a checkbox of sort (although it derives container) that represents its state as a switch each of which has a short label associated with it. It has two types: Android and iOS. The types differ in the way that they are rendered. The Android type (the default) is just a button with a label that can be moved/dragged between the two states. The iOS version is more elaborate due to the look of that platform.

- ## Field Summary

  ### Fields inherited from class Component

  `BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `OnOffSwitch()`
  Default constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addActionListener(ActionListener l)`
  Adds a listener to the switch which will cause an event to dispatch on click
  `protected Dimension`
  `calcPreferredSize()`
  Calculates the preferred size based on component content.
  `protected void`
  `deinitialize()`
  Invoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy.
  `Vector`
  `getActionListeners()`
  Returns a vector containing the action listeners for this button
  `Object`
  `getComponentState()`
  Some components may optionally generate a state which can then be restored using setCompnentState().
  `Collection`
  `getListeners()`
  Returns a collection containing the action listeners for this button
  `String`
  `getOff()`
  Label for the off mode
  `String`
  `getOn()`
  Label for the on mode
  `String[]`
  `getPropertyNames()`
  A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder code
  `Class[]`
  `getPropertyTypes()`
  Matches the property names method (see that method for further details).
  `Object`
  `getPropertyValue(String name)`
  Returns the current value of the property name, this method is used by the GUI builder
  `Image`
  `getSwitchMaskImage()`
  Gets the image that is used for the mask.
  `Image`
  `getSwitchOffImage()`
  Gets the image that is used for the "Off" state of the switch.
  `Image`
  `getSwitchOnImage()`
  Gets the image that is used for the "On" state of the switch.
  `protected void`
  `initComponent()`
  Allows subclasses to bind functionality that relies on fully initialized and "ready for action" component state
  `boolean`
  `isNoTextMode()`
  iOS 7 changed the switch to not include any text
  `protected boolean`
  `isStickyDrag()`
  Returns true if the component is interested in receiving drag/pointer release events even after the gesture exceeded its boundaries.
  `boolean`
  `isValue()`
  The value of the switch
  `void`
  `paint(Graphics g)`
  This method paints the Component on the screen, it should be overriden by subclasses to perform custom drawing or invoke the UI API's to let the PLAF perform the rendering.
  `void`
  `pointerDragged(int x, int y)`
  If this Component is focused, the pointer dragged event will call this method
  `void`
  `pointerPressed(int x, int y)`
  If this Component is focused, the pointer pressed event will call this method
  `void`
  `pointerReleased(int x, int y)`
  If this Component is focused, the pointer released event will call this method
  `void`
  `removeActionListener(ActionListener l)`
  Removes the given action listener from the switch
  `protected void`
  `resetFocusable()`
  Restores the state of the focusable flag to its default state
  `void`
  `setComponentState(Object state)`
  If getComponentState returned a value the setter can update the value and restore the prior state.
  `void`
  `setNoTextMode(boolean noTextMode)`
  iOS 7 changed the switch to not include any text
  `void`
  `setOff(String off)`
  Label for the off mode
  `void`
  `setOn(String on)`
  Label for the on mode
  `String`
  `setPropertyValue(String name, Object value)`
  Sets a new value to the given property, returns an error message if failed and null if successful.
  `void`
  `setSwitchMaskImage(Image switchMaskImage)`
  Sets the image that should be used for the "On" state.
  `void`
  `setSwitchOffImage(Image switchOffImage)`
  Sets the image that should be used for the "Off" state.
  `void`
  `setSwitchOnImage(Image switchOnImage)`
  Sets the image that should be used for the "Off" state.
  `void`
  `setValue(boolean value)`
  The value of the switch

  ### Methods inherited from class Container

  `add, add, add, add, add, add, addAll, addComponent, addComponent, addComponent, addComponent, animateHierarchy, animateHierarchyAndWait, animateHierarchyFade, animateHierarchyFadeAndWait, animateLayout, animateLayoutAndWait, animateLayoutFade, animateLayoutFadeAndWait, animateUnlayout, animateUnlayoutAndWait, applyRTL, cancelRepaints, clearClientProperties, constrainHeightWhenScrollable, constrainWidthWhenScrollable, contains, createAnimateHierarchy, createAnimateHierarchyFade, createAnimateLayout, createAnimateLayoutFade, createAnimateLayoutFadeAndWait, createAnimateMotion, createAnimateUnlayout, createReplaceTransition, dragInitiated, drop, encloseIn, encloseIn, findDropTargetAt, findFirstFocusable, fireClicked, flushReplace, forceRevalidate, getBottomGap, getChildrenAsList, getClosestComponentTo, getComponentAt, getComponentAt, getComponentCount, getComponentIndex, getGridPosX, getGridPosY, getLayout, getLayoutHeight, getLayoutWidth, getLeadComponent, getLeadParent, getResponderAt, getSafeAreaRoot, getScrollIncrement, getSideGap, getUIManager, initLaf, invalidate, isEnabled, isSafeArea, isSafeAreaRoot, isScrollableX, isScrollableY, isSelectableInteraction, isSurface, iterator, iterator, keyPressed, keyReleased, layoutContainer, morph, morphAndWait, paintComponentBackground, paintGlass, paramString, refreshTheme, removeAll, removeComponent, replace, replace, replaceAndWait, replaceAndWait, replaceAndWait, revalidate, revalidateLater, revalidateWithAnimationSafety, scrollComponentToVisible, setCellRenderer, setEnabled, setLayout, setLeadComponent, setSafeArea, setSafeAreaRoot, setScrollable, setScrollableX, setScrollableY, setScrollIncrement, setShouldCalcPreferredSize, setShouldLayout, setUIManager, updateTabIndices`

  ### Methods inherited from class Component

  `accessibilityChanged, accessibilityChanged, addContextMenuListener, addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addMouseWheelListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, addStylusListener, animate, announceForAccessibility, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityNode, getAccessibilityText, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getPropertyTypeNames, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getSemantics, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isHScrollThumbGrabbed, isHScrollThumbHover, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, isVScrollThumbGrabbed, isVScrollThumbHover, keyRepeated, laidOut, longKeyPress, longPointerPress, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerHover, pointerHoverPressed, pointerHoverReleased, pointerPressed, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeContextMenuListener, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removeMouseWheelListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, removeStylusListener, repaint, repaint, requestFocus, respondsToPointerEvents, rotation, scrollRectToVisible, scrollRectToVisible, setAccessibilityText, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCloudBoundProperty, setCloudDestinationProperty, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setHorizontalScrollBounds, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setPullToRefresh, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUIIDFinal, setUnselectedStyle, setVerticalScrollBounds, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContains`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface Iterable

  `forEach`

- ## Constructor Details

  - ### OnOffSwitch

    public OnOffSwitch()
    Default constructor

- ## Method Details

  - ### calcPreferredSize

    protected Dimension calcPreferredSize()

    Calculates the preferred size based on component content. This method is invoked lazily by getPreferred size.

    ###### Returns

    the calculated preferred size based on component content

    Overrides:
      `calcPreferredSize` in class `Container`

  - ### resetFocusable

    protected void resetFocusable()
    Restores the state of the focusable flag to its default state
    Overrides:
      `resetFocusable` in class `Component`

  - ### isStickyDrag

    protected boolean isStickyDrag()

    Returns true if the component is interested in receiving drag/pointer release events even after the gesture exceeded its boundaries. This is useful for spinners etc. where the motion might continue beyond the size of the component

    ###### Returns

    false by default

    Overrides:
      `isStickyDrag` in class `Component`

  - ### addActionListener

    public void addActionListener(ActionListener l)

    Adds a listener to the switch which will cause an event to dispatch on click

    ###### Parameters

    - `l`: implementation of the action listener interface
    Specified by:
      `addActionListener` in interface `ActionSource`

  - ### removeActionListener

    public void removeActionListener(ActionListener l)

    Removes the given action listener from the switch

    ###### Parameters

    - `l`: implementation of the action listener interface
    Specified by:
      `removeActionListener` in interface `ActionSource`

  - ### getActionListeners

    public Vector getActionListeners()

    Returns a vector containing the action listeners for this button

    ###### Returns

    the action listeners

    ###### Deprecated

    use the version that returns a collection

  - ### getListeners

    public Collection getListeners()

    Returns a collection containing the action listeners for this button

    ###### Returns

    the action listeners

  - ### paint

    public void paint(Graphics g)

    This method paints the Component on the screen, it should be overriden by subclasses to perform custom drawing or invoke the UI API's to let the PLAF perform the rendering.

    ###### Parameters

    - `g`: the component graphics
    Specified by:
      `paint` in interface `Animation`
    Overrides:
      `paint` in class `Container`

  - ### initComponent

    protected void initComponent()
    Allows subclasses to bind functionality that relies on fully initialized and "ready for action" component state
    Overrides:
      `initComponent` in class `Component`

  - ### deinitialize

    protected void deinitialize()
    Invoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy. This allows the component to deregister animators and cleanup after itself. This method is the opposite of the initComponent() method.
    Overrides:
      `deinitialize` in class `Component`

  - ### pointerPressed

    public void pointerPressed(int x, int y)

    If this Component is focused, the pointer pressed event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerPressed` in class `Container`

  - ### pointerDragged

    public void pointerDragged(int x, int y)

    If this Component is focused, the pointer dragged event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerDragged` in class `Component`

  - ### pointerReleased

    public void pointerReleased(int x, int y)

    If this Component is focused, the pointer released event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerReleased` in class `Component`

  - ### getOn

    public String getOn()

    Label for the on mode

    ###### Returns

    the on

  - ### setOn

    public void setOn(String on)

    Label for the on mode

    ###### Parameters

    - `on`: the on to set

  - ### getOff

    public String getOff()

    Label for the off mode

    ###### Returns

    the off

  - ### setOff

    public void setOff(String off)

    Label for the off mode

    ###### Parameters

    - `off`: the off to set

  - ### isValue

    public boolean isValue()

    The value of the switch

    ###### Returns

    the value

  - ### setValue

    public void setValue(boolean value)

    The value of the switch

    ###### Parameters

    - `value`: the value to set

  - ### getPropertyNames

    public String[] getPropertyNames()

    A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder code

    ###### Returns

    the property names allowing mutation

    Overrides:
      `getPropertyNames` in class `Component`

  - ### getComponentState

    public Object getComponentState()

    Some components may optionally generate a state which can then be restored using setCompnentState(). This method is used by the UIBuilder.

    ###### Returns

    the component state or null for undefined state.

    Overrides:
      `getComponentState` in class `Component`

  - ### setComponentState

    public void setComponentState(Object state)

    If getComponentState returned a value the setter can update the value and restore the prior state.

    ###### Parameters

    - `state`: the non-null state
    Overrides:
      `setComponentState` in class `Component`

  - ### getPropertyTypes

    public Class[] getPropertyTypes()

    Matches the property names method (see that method for further details).

    ###### Returns

    the types of the properties

    Overrides:
      `getPropertyTypes` in class `Component`

  - ### getPropertyValue

    public Object getPropertyValue(String name)

    Returns the current value of the property name, this method is used by the GUI builder

    ###### Parameters

    - `name`: the name of the property

    ###### Returns

    the value of said property

    Overrides:
      `getPropertyValue` in class `Component`

  - ### setPropertyValue

    public String setPropertyValue(String name, Object value)

    Sets a new value to the given property, returns an error message if failed and null if successful. Notice that some builtin properties such as "$designMode" might be sent to components to indicate application state.

    ###### Parameters

    - `name`: the name of the property

    - `value`: new value for the property

    ###### Returns

    error message or null

    Overrides:
      `setPropertyValue` in class `Component`

  - ### isNoTextMode

    public boolean isNoTextMode()

    iOS 7 changed the switch to not include any text

    ###### Returns

    the noTextMode

  - ### setNoTextMode

    public void setNoTextMode(boolean noTextMode)

    iOS 7 changed the switch to not include any text

    ###### Parameters

    - `noTextMode`: the noTextMode to set

  - ### getSwitchOnImage

    public Image getSwitchOnImage()

    Gets the image that is used for the "On" state of the switch.

    ###### Returns

    Returns:

      The image that will be used for the "On" state. If the "onOffIOSModeBool" theme constant is false and the switchOnImage hasn't been explicitly set by the `#setSwitchOnImage(com.codename1.ui.Image)` method, then this will return null.

      ###### See also

      - #setSwitchOnImage(com.codename1.ui.Image)

      - #getSwitchOffImage()

      - #getSwitchMaskImage()

  - ### setSwitchOnImage

    public void setSwitchOnImage(Image switchOnImage)

    Sets the image that should be used for the "Off" state. Note: This option is only used if the "onOffIOSModeBool" theme constant is enabled.

    Note: If the "onOffIOSModeBool" theme constant is false and you set this image, you must also set the "Off" image with `#setSwitchOffImage(com.codename1.ui.Image)` and the "Mask" image with `#setSwitchMaskImage(com.codename1.ui.Image)`.

    ###### Parameters

    - `switchOnImage`: the switchOnImage to set

    ###### See also

    - #getSwitchOnImage()

    - #setSwitchMaskImage(com.codename1.ui.Image)

    - #setSwitchOffImage(com.codename1.ui.Image)

  - ### getSwitchOffImage

    public Image getSwitchOffImage()

    Gets the image that is used for the "Off" state of the switch.

    ###### Returns

    Returns:

      The image that will be used for the "Off" state. If the "onOffIOSModeBool" theme constant is false and the switchOffImage hasn't been explicitly set by the `#setSwitchOffImage(com.codename1.ui.Image)` method, then this will return null.

      ###### See also

      - #setSwitchOffImage(com.codename1.ui.Image)

      - #getSwitchOnImage()

      - #getSwitchMaskImage()

  - ### setSwitchOffImage

    public void setSwitchOffImage(Image switchOffImage)

    Sets the image that should be used for the "Off" state. Note: This option is only used if the "onOffIOSModeBool" theme constant is enabled.

    Note: If the "onOffIOSModeBool" theme constant is false and you set this image, you must also set the "On" image with `#setSwitchOnImage(com.codename1.ui.Image)` and the "Mask" image with `#setSwitchMaskImage(com.codename1.ui.Image)`.

    ###### Parameters

    - `switchOffImage`: the switchOffImage to set

    ###### See also

    - #getSwitchOffImage()

    - #setSwitchMaskImage(com.codename1.ui.Image)

    - #setSwitchOnImage(com.codename1.ui.Image)

  - ### getSwitchMaskImage

    public Image getSwitchMaskImage()

    Gets the image that is used for the mask. Note: This option is only used if the "onOffIOSModeBool" theme constant is enabled.

    This image will generally consist of an opaque border/frame with a transparent center such that the "on" and "off" images can be painted inside the transparent part, and anything that is outside that center will be painted over by the frame, or clipped.

    ###### Returns

    Returns:

      the switchMaskImage image if the "onOffIOSModeBool" flag is set or the mask image has been explicitly set on this OnOffSwitch using `#setSwitchMaskImage(com.codename1.ui.Image)`

      ###### See also

      - #getSwitchOffImage()

      - #setSwitchOnImage(com.codename1.ui.Image)

      - #getSwitchMaskImage()

      - #setSwitchMaskImage(com.codename1.ui.Image)

  - ### setSwitchMaskImage

    public void setSwitchMaskImage(Image switchMaskImage)

    Sets the image that should be used for the "On" state.

    Note: If the "onOffIOSModeBool" is false and you set this mask, you must also set the "On" image with `#setSwitchOnImage(com.codename1.ui.Image)` and the "Off" image with `#setSwitchOffImage(com.codename1.ui.Image)`.

    ###### Parameters

    - `switchMaskImage`: @param switchMaskImage the switchMaskImage image to set as the mask for the on-off switch.