Package ej.mwt.style

## Interface Style

- All Known Implementing Classes:
    `EditableStyle`

      public interface Style

  A style describes how widgets must be rendered on screen. The attributes of the style are strongly inspired from CSS.

  The dimension is used to control the size of the widget.

  The horizontal and vertical alignments are used to position the content of the widget within its bounds.

  The margin, border and padding are the used to wrap the content of the widget. The widget is wrapped in the following sequence: first the padding, then the border, and finally the margin.

  The background is used to render the background of the widget.

  The color can be used to render the content of the widget, such as text or drawings.

  The font can be used to render the text.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object obj)` | Indicates whether some other object is "equal to" this one.
    `Background` | `getBackground()` | Gets the background.
    `Outline` | `getBorder()` | Gets the border.
    `int` | `getColor()` | Gets the color.
    `Dimension` | `getDimension()` | Gets the dimension.
    `float` | `getExtraFloat​(int fieldId, float defaultValue)` | Gets an extra field as a float.
    `int` | `getExtraInt​(int fieldId, int defaultValue)` | Gets an extra field as an int.
    `<T> T` | `getExtraObject​(int fieldId, Class<T> clazz, T defaultValue)` | Gets an extra field as an object of the given type.
    `Font` | `getFont()` | Gets the font.
    `int` | `getHorizontalAlignment()` | Gets the horizontal alignment.
    `Outline` | `getMargin()` | Gets the margin.
    `Outline` | `getPadding()` | Gets the padding.
    `int` | `getVerticalAlignment()` | Gets the vertical alignment.
    `int` | `hashCode()` | Returns a hash code value for the object.

- - ### Method Detail

    - #### getDimension

          Dimension getDimension()

      Gets the dimension.
      Returns:
        the dimension.

    - #### getHorizontalAlignment

          int getHorizontalAlignment()

      Gets the horizontal alignment.
      Returns:
        the horizontal alignment.
      See Also:
        `Alignment`

    - #### getVerticalAlignment

          int getVerticalAlignment()

      Gets the vertical alignment.
      Returns:
        the vertical alignment.
      See Also:
        `Alignment`

    - #### getMargin

          Outline getMargin()

      Gets the margin.
      Returns:
        the margin.

    - #### getBorder

          Outline getBorder()

      Gets the border.
      Returns:
        the border.

    - #### getPadding

          Outline getPadding()

      Gets the padding.
      Returns:
        the padding.

    - #### getBackground

          Background getBackground()

      Gets the background.
      Returns:
        the background.

    - #### getColor

          int getColor()

      Gets the color.
      Returns:
        the color.

    - #### getFont

          Font getFont()

      Gets the font.
      Returns:
        the font.

    - #### getExtraObject

          <T> T getExtraObject​(int fieldId,
                               Class<T> clazz,
                               T defaultValue)

      Gets an extra field as an object of the given type.
      Type Parameters:
        `T` - the type of the extra field.
      Parameters:
        `fieldId` - the ID of the extra field.
        `clazz` - the type of the extra field.
        `defaultValue` - the value to return if the extra field is not set or if it does not match the given type.
      Returns:
        the value of the extra field.

    - #### getExtraInt

          int getExtraInt​(int fieldId,
                          int defaultValue)

      Gets an extra field as an int.
      Parameters:
        `fieldId` - the ID of the extra field.
        `defaultValue` - the value to return if the extra field is not set or if it is not an integer.
      Returns:
        the value of the extra field.

    - #### getExtraFloat

          float getExtraFloat​(int fieldId,
                              float defaultValue)

      Gets an extra field as a float.
      Parameters:
        `fieldId` - the ID of the extra field.
        `defaultValue` - the value to return if the extra field is not set or if it is not a float.
      Returns:
        the value of the extra field.

    - #### equals

          boolean equals​(@Nullable
                         Object obj)

      Description copied from class: `Object`
      Indicates whether some other object is "equal to" this one.

      The `equals` method implements an equivalence relation on non-null object references:

      - It is reflexive: for any non-null reference value `x`, `x.equals(x)` should return `true`.
      - It is symmetric: for any non-null reference values `x` and `y`, `x.equals(y)` should return `true` if and only if `y.equals(x)` returns `true`.
      - It is transitive: for any non-null reference values `x`, `y`, and `z`, if `x.equals(y)` returns `true` and `y.equals(z)` returns `true`, then `x.equals(z)` should return `true`.
      - It is consistent: for any non-null reference values `x` and `y`, multiple invocations of `x.equals(y)` consistently return `true` or consistently return `false`, provided no information used in `equals` comparisons on the objects is modified.
      - For any non-null reference value `x`, `x.equals(null)` should return `false`.

      The `equals` method for class `Object` implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values `x` and `y`, this method returns `true` if and only if `x` and `y` refer to the same object (`x == y` has the value `true`).

      Note that it is generally necessary to override the `hashCode` method whenever this method is overridden, so as to maintain the general contract for the `hashCode` method, which states that equal objects must have equal hash codes.

      Overrides:
        `equals` in class `Object`
      Parameters:
        `obj` - the reference object with which to compare.
      Returns:
        `true` if this object is the same as the obj argument; `false` otherwise.
      See Also:
        `Object.hashCode()`, `HashMap`

    - #### hashCode

          int hashCode()

      Description copied from class: `Object`
      Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by `HashMap`.

      The general contract of `hashCode` is:

      - Whenever it is invoked on the same object more than once during an execution of a Java application, the `hashCode` method must consistently return the same integer, provided no information used in `equals` comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
      - If two objects are equal according to the `equals(Object)` method, then calling the `hashCode` method on each of the two objects must produce the same integer result.
      - It is not required that if two objects are unequal according to the `Object.equals(java.lang.Object)` method, then calling the `hashCode` method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

      As much as is reasonably practical, the hashCode method defined by class `Object` does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

      Overrides:
        `hashCode` in class `Object`
      Returns:
        a hash code value for this object.
      See Also:
        `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`