com.smartgwt.client.widgets.drawing

## Class DrawItem

- java.lang.Object
- - com.smartgwt.client.core.BaseClass
  - - com.smartgwt.client.widgets.drawing.DrawItem

- All Implemented Interfaces:
    com.google.gwt.event.shared.HasHandlers, HasClickHandlers, HasDragMoveHandlers, HasDragResizeMoveHandlers, HasDragResizeStartHandlers, HasDragResizeStopHandlers, HasDragStartHandlers, HasDragStopHandlers, HasMouseDownHandlers, HasMouseMoveHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseUpHandlers, HasMovedHandlers, HasResizedHandlers, HasShowContextMenuHandlers
  Direct Known Subclasses:
    DrawCurve, DrawDiamond, DrawGroup, DrawImage, DrawLabel, DrawLine, DrawLinePath, DrawOval, DrawPath, DrawRect, DrawSector, DrawShape

      public class DrawItem
      extends BaseClass
      implements HasClickHandlers, HasMouseDownHandlers, HasMouseMoveHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseUpHandlers, HasMovedHandlers, HasDragMoveHandlers, HasDragResizeMoveHandlers, HasDragResizeStartHandlers, HasDragResizeStopHandlers, HasDragStartHandlers, HasDragStopHandlers, HasResizedHandlers, HasShowContextMenuHandlers

  Base class for graphical elements drawn in a DrawPane. All properties and methods documented here are available on all DrawItems unless otherwise specified.

  Note that DrawItems as such should never be created, only concrete subclasses such as `DrawGroup` and `DrawLine`.

  See `DrawPane` for the different approaches to create DrawItems.

- - ### Field Summary

    - ### Fields inherited from class com.smartgwt.client.core.BaseClass

      `config, factoryCreated, factoryProperties, id, scClassName`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DrawItem()`
    `DrawItem(com.google.gwt.core.client.JavaScriptObject jsObj)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `com.google.gwt.event.shared.HandlerRegistration` | `addClickHandler(ClickHandler handler)` Add a click handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragMoveHandler(DragMoveHandler handler)` Add a dragMove handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragResizeMoveHandler(DragResizeMoveHandler handler)` Add a dragResizeMove handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragResizeStartHandler(DragResizeStartHandler handler)` Add a dragResizeStart handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragResizeStopHandler(DragResizeStopHandler handler)` Add a dragResizeStop handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragStartHandler(DragStartHandler handler)` Add a dragStart handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragStopHandler(DragStopHandler handler)` Add a dragStop handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addMouseDownHandler(MouseDownHandler handler)` Add a mouseDown handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addMouseMoveHandler(MouseMoveHandler handler)` Add a mouseMove handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addMouseOutHandler(MouseOutHandler handler)` Add a mouseOut handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addMouseOverHandler(MouseOverHandler handler)` Add a mouseOver handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addMouseUpHandler(MouseUpHandler handler)` Add a mouseUp handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addMovedHandler(MovedHandler handler)` Add a moved handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addResizedHandler(ResizedHandler handler)` Add a resized handler.
    `com.google.gwt.event.shared.HandlerRegistration` | `addShowContextMenuHandler(ShowContextMenuHandler handler)` Add a showContextMenu handler.
    `static void` | `changeAutoChildDefaults(java.lang.String autoChildName, Canvas defaults)` Changes the defaults for Canvas AutoChildren named `autoChildName`.
    `static void` | `changeAutoChildDefaults(java.lang.String autoChildName, DrawItem defaults)` Changes the defaults for DrawItem AutoChildren named `autoChildName`.
    `static void` | `changeAutoChildDefaults(java.lang.String autoChildName, FormItem defaults)` Changes the defaults for FormItem AutoChildren named `autoChildName`.
    `static float` | `computeAngle(double px1, double py1, double px2, double py2)` Deprecated. `GwtFloatVsDouble`
    `static double` | `computeAngleAsDouble(double px1, double py1, double px2, double py2)` Computes the angle in degrees from the positive X axis to the difference vector v2 - v1 between the two given vectors.
    `com.google.gwt.core.client.JavaScriptObject` | `create()`
    `void` | `dragResizeMove(java.lang.String position, java.lang.Integer x, java.lang.Integer y, java.lang.Integer dX, java.lang.Integer dY)` If `canDrag` is true and the `control knobs` include "resize" knobs, then this notification method will be fired when the user drag-resizes the draw item.
    `void` | `draw()` Draw this item into its current `DrawPane`.
    `void` | `erase()` Erase this drawItem's visual representation and remove it from its DrawGroup (if any) and DrawPane.
    `protected int[]` | `getAttributeAsIntArray(java.lang.String property)`
    `int[]` | `getBoundingBox()` Returns the startPoint endPoint
    `java.lang.Double[]` | `getBoundingBoxAsDouble()` Returns the startPoint endPoint
    `java.lang.Boolean` | `getCanDrag()` Is this DrawItem draggable? If true, then the DrawItem can be drag-repositioned by the user.
    `java.lang.Boolean` | `getCanHover()` Will this DrawItem fire hover events when the user hovers over it?
    `Canvas` | `getCanvasAutoChild(java.lang.String autoChildName)` Returns the `Canvas` AutoChild named `autoChildName` if already created.
    `Point` | `getCenter()` Returns the center point of the `bounding box`.
    `Menu` | `getContextMenu()` Context menu to show for this object, an instance of the Menu widget.
    `DrawKnob` | `getCornerResizeKnob()` Note : This API is non-functional (always returns null) and exists only to make you aware that this MultiAutoChild exists.
    `Cursor` | `getCursor()` If set, specifies the cursor to display when the mouse pointer is over this DrawItem.
    `java.lang.Boolean` | `getDestroyed()` Flag indicating a drawItem has been destroyed, similar to `destroyed`.
    `java.lang.Boolean` | `getDestroying()` Flag indicating a drawItem is mid-destruction, similar to `destroying`.
    `int` | `getDragStartDistance()` Number of pixels the cursor needs to move before the EventHandler starts a drag operation.
    `DrawGroup` | `getDrawGroup()` `DrawGroup` this drawItem is a member of.
    `DrawItem` | `getDrawItemAutoChild(java.lang.String autoChildName)` Returns the `DrawItem` AutoChild named `autoChildName` if already created.
    `DrawPane` | `getDrawPane()` `DrawPane` this drawItem should draw in.
    `java.lang.String` | `getEditProxyConstructor()` Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
    `ArrowStyle` | `getEndArrow()` Style of arrowhead to draw at the end of the line or path.
    `DrawKnob` | `getEndKnob()` If this item is showing `KnobType.ENDPOINT` `control knobs`, this attribute specifies the AutoChild for the `DrawKnob` for end point of current drawItem.
    `boolean` | `getEventOpaque()` Should events inside this DrawItem be attributed to it regardless of which pixels are actually set, if no fill is specified? If set for DrawItems that aren't closed, will capture events occurring in the region that would filled if a fill were specified.
    `java.lang.String` | `getFillColor()` Fill color to use for shapes.
    `Gradient` | `getFillGradient()` Fill gradient to use for shapes.
    `java.lang.String` | `getFillGradientAsString()` Fill gradient to use for shapes.
    `float` | `getFillOpacity()` Opacity of the fillColor, as a number between 0 (transparent) and 1 (opaque).
    `FormItem` | `getFormItemAutoChild(java.lang.String autoChildName)` Returns the `FormItem` AutoChild named `autoChildName` if already created.
    `int` | `getHoverDelay()` If `this.canHover` is true, how long should the mouse be kept over this widget before the hover event is fired
    `java.lang.String` | `getHoverHTML()` If `showHover` is true, when the user holds the mouse over this DrawItem for long enough to trigger a hover event, a hover canvas is shown by default.
    `java.lang.Boolean` | `getKeepInParentRect()` Constrains drag-resizing and drag-repositioning of this draw item to either the current visible area of the `draw pane` or an arbitrary bounding box (if set to an array of the form `[left, top, left + width, top + height]`).
    `KnobType[]` | `getKnobs()` Array of control knobs to display for this item.
    `LineCap` | `getLineCap()` Style of drawing the endpoints of a line.
    `java.lang.String` | `getLineColor()` Line color
    `float` | `getLineOpacity()` Opacity for lines, as a number between 0 (transparent) and 1 (opaque).
    `LinePattern` | `getLinePattern()` Pattern for lines, eg "solid" or "dash".
    `int` | `getLineWidth()` Pixel width for lines.
    `DrawKnob` | `getMoveKnob()` If this item is showing `KnobType.MOVE` `control knobs`, this attribute specifies the AutoChild for the `DrawKnob` that allows a user to move the DrawItem with help of a knob located at `moveKnobPoint`.
    `int[]` | `getMoveKnobOffset()` If this item is showing a `"move"` `control knob`, this attribute allows you to specify an offset in pixels from the `moveKnobPoint` for the move knob.
    `MoveKnobPoint` | `getMoveKnobPoint()` If this item is showing a `KnobType.MOVE` `control knob`, this attribute specifies where the knob should appear with respect to the draw item.
    `static DrawItem` | `getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)`
    `int` | `getPageLeft()` Returns the page-relative left coordinate of the widget on the page, in pixels.
    `int` | `getPageTop()` Returns the page-relative top coordinate of the widget on the page, in pixels
    `java.lang.String` | `getPrompt()` Default `hover HTML` that is displayed in the global hover canvas if the user hovers over this DrawItem and `showHover` is true.
    `java.lang.String[]` | `getProportionalResizeModifiers()` If `proportionalResizing` is set to `ProportionalResizeMode.MODIFIER` or `ProportionalResizeMode.MODIFIER_OFF` then proportional resizing of the DrawItem is activated or deactivated, respectively, whenever at least one key in this set of modifier keys is pressed.
    `ProportionalResizeMode` | `getProportionalResizing()` This property specifies the conditions for when proportional resizing is used.
    `static DrawItem` | `getRef(com.google.gwt.core.client.JavaScriptObject jsObj)`
    `int[]` | `getResizeBoundingBox()` Returns the bounding box of the shape reflected by the `resize outline` shown when dragging the `resize knobs`.
    `java.lang.Double[]` | `getResizeBoundingBoxAsDouble()` Returns the bounding box of the shape reflected by the `resize outline` shown when dragging the `resize knobs`.
    `ResizeKnobPoint[]` | `getResizeKnobPoints()` If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the points with respect to the draw item where resize knobs should appear.
    `DrawRect` | `getResizeOutline()` If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the AutoChild for the `DrawRect` that draws a rectangle frame which connects all resize knobs of current DrawItem.
    `boolean` | `getResizeViaLocalTransformOnly()` If this DrawItem is showing `KnobType.RESIZE` `control knobs`, should resizing the shape solely update the local transform (for example, the DrawItem's `scale` or `translation`)?.
    `float` | `getRotation()` Deprecated. `GwtFloatVsDouble`
    `double` | `getRotationAsDouble()` Rotation in degrees about the `center point`.
    `int[]` | `getScale()` Array holds 2 values representing scaling along x and y dimensions.
    `Shadow` | `getShadow()` Shadow used for all DrawItem subtypes.
    `boolean` | `getShowHover()` If `canHover` is true, should we show the global hover canvas by default when the user hovers over this DrawItem?
    `boolean` | `getShowResizeOutline()` If this item is showing `KnobType.RESIZE` `control knobs` will the resize outline be shown or not.
    `DrawKnob` | `getSideResizeKnob()` Note : This API is non-functional (always returns null) and exists only to make you aware that this MultiAutoChild exists.
    `ArrowStyle` | `getStartArrow()` Style of arrowhead to draw at the beginning of the line or path.
    `DrawKnob` | `getStartKnob()` If this item is showing `KnobType.STARTPOINT` `control knobs`, this attribute specifies the AutoChild for the `DrawKnob` for start point of current drawItem.
    `void` | `getSvgString()` Generates a string containing the SVG source of this DrawItem.
    `int[]` | `getTranslate()` Array holds two values representing translation along the x and y dimensions.
    `double` | `getXShearFactor()` The slope of an x-shearing transformation applied to this DrawItem.
    `double` | `getYShearFactor()` The slope of a y-shearing transformation applied to this DrawItem.
    `void` | `hide()` Hide this drawItem.
    `void` | `hideAllKnobs()` Hides all control knobs for this drawItem.
    `void` | `hideKnobs(KnobType... knobType)` Hides a set of control knobs for this drawItem.
    `void` | `hideKnobs(KnobType knobType)` Hides a set of control knobs for this drawItem.
    `boolean` | `hover()` If `canHover` is true for this DrawItem, the hover() string method will be fired when the user hovers over this DrawItem.
    `boolean` | `isInBounds(int x, int y)` Returns true if the given point in the drawing coordinate system, when converted to coordinates in this DrawItem's local coordinate system, is within the `bounding box` of this DrawItem's shape.
    `boolean` | `isPointInPath(int x, int y)` Returns true if the given point in the drawing coordinate system is within this DrawItem's shape, taking into account local transforms.
    `void` | `moveBy(int dX, int dY)` Move the shape by the specified deltas for the left and top coordinate.
    `void` | `moveTo(java.lang.Integer left, java.lang.Integer top)` Move the DrawItem to the specified coordinates in the global coordinate system.
    `void` | `resizeBy(int dX, int dY)` Resize the shape by the specified deltas.
    `void` | `resizeTo(java.lang.Integer width, java.lang.Integer height)` Resize to the specified size
    `void` | `rotateBy(double degrees)` Rotate the shape by the relative rotation in degrees
    `void` | `rotateTo(double degrees)` Rotate the shape by the absolute rotation in degrees
    `void` | `scaleBy(double x, double y)` Scale the shape by the x, y multipliers
    `void` | `scaleTo(double x, double y)` Scale the shape by the x, y multipliers
    `protected void` | `setAttribute(java.lang.String attribute, float[] value, boolean allowPostCreate)`
    `protected void` | `setAttribute(java.lang.String attribute, java.lang.Float[] value, boolean allowPostCreate)`
    `void` | `setAutoChildConstructor(java.lang.String autoChildName, java.lang.String className)` Sets the SmartClient constructor for the AutoChild named `autoChildName`.
    `void` | `setAutoChildProperties(java.lang.String autoChildName, Canvas properties)` Sets the properties for creating a `Canvas` AutoChild named `autoChildName`.
    `void` | `setAutoChildProperties(java.lang.String autoChildName, DrawItem properties)` Sets the properties for creating a `DrawItem` AutoChild named `autoChildName`.
    `void` | `setAutoChildProperties(java.lang.String autoChildName, EditProxy properties)` Sets the properties for creating an AutoChild named `autoChildName`.
    `void` | `setAutoChildProperties(java.lang.String autoChildName, FormItem properties)` Sets the properties for creating a `FormItem` AutoChild named `autoChildName`.
    `void` | `setAutoChildVisibility(java.lang.String autoChildName, boolean visible)` Sets whether to create and show the AutoChild named `autoChildName`.
    `void` | `setCanDrag(java.lang.Boolean canDrag)` Is this DrawItem draggable? If true, then the DrawItem can be drag-repositioned by the user.
    `void` | `setCanHover(java.lang.Boolean canHover)` Will this DrawItem fire hover events when the user hovers over it?
    `void` | `setCenterPoint(int left, int top)` Change the center point for this DrawItem.
    `void` | `setContextMenu(Menu contextMenu)` Context menu to show for this object, an instance of the Menu widget.
    `void` | `setCursor(Cursor cursor)` If set, specifies the cursor to display when the mouse pointer is over this DrawItem.
    `static void` | `setDefaultProperties(DrawItem drawItemProperties)` Class level method to set the default properties of this class.
    `void` | `setDragStartDistance(int dragStartDistance)` Number of pixels the cursor needs to move before the EventHandler starts a drag operation.
    `void` | `setDrawGroup(DrawGroup drawGroup)` `DrawGroup` this drawItem is a member of.
    `void` | `setDrawPane(DrawPane drawPane)` `DrawPane` this drawItem should draw in.
    `void` | `setEditProxyConstructor(java.lang.String editProxyConstructor)` Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
    `void` | `setEndArrow(ArrowStyle endArrow)` Style of arrowhead to draw at the end of the line or path.
    `void` | `setEventOpaque(boolean eventOpaque)` Should events inside this DrawItem be attributed to it regardless of which pixels are actually set, if no fill is specified? If set for DrawItems that aren't closed, will capture events occurring in the region that would filled if a fill were specified.
    `void` | `setFillColor(java.lang.String fillColor)` Fill color to use for shapes.
    `void` | `setFillGradient(Gradient fillGradient)` Fill gradient to use for shapes.
    `void` | `setFillGradient(java.lang.String fillGradient)` Fill gradient to use for shapes.
    `void` | `setFillOpacity(float fillOpacity)` Opacity of the fillColor, as a number between 0 (transparent) and 1 (opaque).
    `void` | `setHoverDelay(int hoverDelay)` If `this.canHover` is true, how long should the mouse be kept over this widget before the hover event is fired
    `void` | `setKeepInParentRect(java.lang.Boolean keepInParentRect)` Constrains drag-resizing and drag-repositioning of this draw item to either the current visible area of the `draw pane` or an arbitrary bounding box (if set to an array of the form `[left, top, left + width, top + height]`).
    `void` | `setKeepInParentRect(float... keepInParentRect)` Constrains drag-resizing and drag-repositioning of this draw item to either the current visible area of the `draw pane` or an arbitrary bounding box (if set to an array of the form `[left, top, left + width, top + height]`).
    `void` | `setKnobs(KnobType... knobs)` Array of control knobs to display for this item.
    `void` | `setLineCap(LineCap lineCap)` Style of drawing the endpoints of a line.
    `void` | `setLineColor(java.lang.String lineColor)` Line color If this method is called after the component has been drawn/initialized: Update lineColor for this drawItem.
    `void` | `setLineOpacity(float lineOpacity)` Opacity for lines, as a number between 0 (transparent) and 1 (opaque).
    `void` | `setLinePattern(LinePattern linePattern)` Pattern for lines, eg "solid" or "dash".
    `void` | `setLineWidth(int lineWidth)` Pixel width for lines.
    `void` | `setMoveKnobOffset(int[] moveKnobOffset)` If this item is showing a `"move"` `control knob`, this attribute allows you to specify an offset in pixels from the `moveKnobPoint` for the move knob.
    `void` | `setMoveKnobPoint(MoveKnobPoint moveKnobPoint)` If this item is showing a `KnobType.MOVE` `control knob`, this attribute specifies where the knob should appear with respect to the draw item.
    `void` | `setPrompt(java.lang.String prompt)` Default `hover HTML` that is displayed in the global hover canvas if the user hovers over this DrawItem and `showHover` is true.
    `void` | `setPropertyValue(java.lang.String propertyName, java.lang.Object newValue)` Sets a property on this DrawItem, calling the appropriate setter method if one is found and is supported.
    `void` | `setProportionalResizeModifiers(java.lang.String... proportionalResizeModifiers)` If `proportionalResizing` is set to `ProportionalResizeMode.MODIFIER` or `ProportionalResizeMode.MODIFIER_OFF` then proportional resizing of the DrawItem is activated or deactivated, respectively, whenever at least one key in this set of modifier keys is pressed.
    `void` | `setProportionalResizing(ProportionalResizeMode proportionalResizing)` This property specifies the conditions for when proportional resizing is used.
    `void` | `setResizeKnobPoints(ResizeKnobPoint... resizeKnobPoints)` If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the points with respect to the draw item where resize knobs should appear.
    `void` | `setResizeViaLocalTransformOnly(boolean resizeViaLocalTransformOnly)` If this DrawItem is showing `KnobType.RESIZE` `control knobs`, should resizing the shape solely update the local transform (for example, the DrawItem's `scale` or `translation`)?.
    `void` | `setRotation(double rotation)` Rotation in degrees about the `center point`.
    `void` | `setRotation(float rotation)` Deprecated. `GwtFloatVsDouble`
    `void` | `setScale(int[] scale)` Array holds 2 values representing scaling along x and y dimensions.
    `void` | `setShadow(Shadow shadow)` Shadow used for all DrawItem subtypes.
    `void` | `setShowHover(boolean showHover)` If `canHover` is true, should we show the global hover canvas by default when the user hovers over this DrawItem?
    `void` | `setShowResizeOutline(boolean showResizeOutline)` If this item is showing `KnobType.RESIZE` `control knobs` will the resize outline be shown or not.
    `void` | `setStartArrow(ArrowStyle startArrow)` Style of arrowhead to draw at the beginning of the line or path.
    `void` | `setTranslate(int[] translate)` Array holds two values representing translation along the x and y dimensions.
    `void` | `setXShearFactor(double xShearFactor)` The slope of an x-shearing transformation applied to this DrawItem.
    `void` | `setYShearFactor(double yShearFactor)` The slope of a y-shearing transformation applied to this DrawItem.
    `void` | `show()` Make this drawItem visible.
    `void` | `showAllKnobs()` Shows all supported control knobs for this drawItem.
    `void` | `showKnobs(KnobType... knobType)` Shows a set of control knobs for this drawItem.
    `void` | `showKnobs(KnobType knobType)` Shows a set of control knobs for this drawItem.
    `boolean` | `supportsEndArrow()` Does this DrawItem support `DrawItem.setEndArrow()`? For example, this is false for `DrawRect` and `DrawOval`, and true for `DrawLine`.
    `boolean` | `supportsStartArrow()` Does this DrawItem support `DrawItem.setStartArrow()`? For example, this is false for `DrawRect` and `DrawOval`, and true for `DrawLine`.

    - ### Methods inherited from class com.smartgwt.client.core.BaseClass

      `applyFactoryProperties, asSGWTComponent, createJsObj, destroy, doAddHandler, doInit, error, error, errorIfNotCreated, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsElement, getAttributeAsFloat, getAttributeAsInt, getAttributeAsJavaScriptObject, getAttributeAsMap, getAttributeAsString, getAttributeAsStringArray, getClassName, getConfig, getHandlerCount, getID, getJsObj, getOrCreateJsObj, getScClassName, getTestInstance, hasAutoAssignedID, internalSetID, internalSetID, isCreated, isFactoryCreated, onBind, onInit, registerID, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setConfig, setFactoryCreated, setID, setJavaScriptObject, setProperty, setProperty, setProperty, setProperty, setScClassName`

    - ### Methods inherited from class java.lang.Object

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

    - ### Methods inherited from interface com.google.gwt.event.shared.HasHandlers

      `fireEvent`

- - ### Constructor Detail

    - #### DrawItem

          public DrawItem()

    - #### DrawItem

          public DrawItem(com.google.gwt.core.client.JavaScriptObject jsObj)

  - ### Method Detail

    - #### getOrCreateRef

          public static DrawItem getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)

    - #### changeAutoChildDefaults

          public static void changeAutoChildDefaults(java.lang.String autoChildName,
                                     Canvas defaults)

      Changes the defaults for Canvas AutoChildren named `autoChildName`.
      Parameters:
        `autoChildName` - name of an AutoChild to customize the defaults for.
        `defaults` - Canvas defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties.
      See Also:
        `AutoChildUsage`

    - #### changeAutoChildDefaults

          public static void changeAutoChildDefaults(java.lang.String autoChildName,
                                     FormItem defaults)

      Changes the defaults for FormItem AutoChildren named `autoChildName`.
      Parameters:
        `autoChildName` - name of an AutoChild to customize the defaults for.
        `defaults` - FormItem defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties.
      See Also:
        `AutoChildUsage`

    - #### changeAutoChildDefaults

          public static void changeAutoChildDefaults(java.lang.String autoChildName,
                                     DrawItem defaults)

      Changes the defaults for DrawItem AutoChildren named `autoChildName`.
      Parameters:
        `autoChildName` - name of an AutoChild to customize the defaults for.
        `defaults` - DrawItem defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties.
      See Also:
        `AutoChildUsage`

    - #### create

          public com.google.gwt.core.client.JavaScriptObject create()

      Specified by:
        `create` in class `BaseClass`

    - #### setCanDrag

          public void setCanDrag(java.lang.Boolean canDrag)

      Is this DrawItem draggable? If true, then the DrawItem can be drag-repositioned by the user.
      If this method is called after the component has been drawn/initialized: Setter for `canDrag`.

      Note : This is an advanced setting

      Parameters:
        `canDrag` - new value for `this.canDrag`.. Default value is false

    - #### getCanDrag

          public java.lang.Boolean getCanDrag()

      Is this DrawItem draggable? If true, then the DrawItem can be drag-repositioned by the user.
      Returns:
        Boolean

    - #### setCanHover

          public void setCanHover(java.lang.Boolean canHover)

      Will this DrawItem fire hover events when the user hovers over it?
      Parameters:
        `canHover` - Default value is null
      See Also:
        `setShowHover(boolean)`

    - #### getCanHover

          public java.lang.Boolean getCanHover()

      Will this DrawItem fire hover events when the user hovers over it?
      Returns:
        Boolean
      See Also:
        `getShowHover()`

    - #### setContextMenu

          public void setContextMenu(Menu contextMenu)

      Context menu to show for this object, an instance of the Menu widget.

      Note: if `Canvas.destroy()` is called on a canvas, any specified context menu is not automatically destroyed as well. This is in contrast to `MenuButton`s which automatically destroy their specified `menu` by default. The behavior is intentional as context menus are commonly reused across components.

      Parameters:
        `contextMenu` - Default value is null
      See Also:
        `ShowContextMenuEvent`, `Cues overview and related methods`, Context menus Example

    - #### getContextMenu

          public Menu getContextMenu()

      Context menu to show for this object, an instance of the Menu widget.

      Note: if `Canvas.destroy()` is called on a canvas, any specified context menu is not automatically destroyed as well. This is in contrast to `MenuButton`s which automatically destroy their specified `menu` by default. The behavior is intentional as context menus are commonly reused across components.

      Returns:
        Menu
      See Also:
        `ShowContextMenuEvent`, `Cues overview and related methods`, Context menus Example

    - #### getCornerResizeKnob

          public DrawKnob getCornerResizeKnob()

      Note : This API is non-functional (always returns null) and exists only to make you aware that this MultiAutoChild exists. See `Using AutoChildren` for details.

      If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the MultiAutoChild for the `DrawKnob` that allows a user to resize the DrawItem with help of knobs located at corners of a bounding rectangle of current DrawItem. Default shape is red circle.

      Returns:
        null

    - #### setCursor

          public void setCursor(Cursor cursor)

      If set, specifies the cursor to display when the mouse pointer is over this DrawItem.

      Note : This is an advanced setting

      Parameters:
        `cursor` - new cursor.. Default value is null

    - #### getCursor

          public Cursor getCursor()

      If set, specifies the cursor to display when the mouse pointer is over this DrawItem.
      Returns:
        Cursor

    - #### getDestroyed

          public java.lang.Boolean getDestroyed()
                                         throws java.lang.IllegalStateException

      Flag indicating a drawItem has been destroyed, similar to `destroyed`.

      Note : This method should be called only after the underlying component has been created.

      Returns:
        Boolean
      Throws:
        `java.lang.IllegalStateException` - if the underlying component has not yet been created.

    - #### getDestroying

          public java.lang.Boolean getDestroying()
                                          throws java.lang.IllegalStateException

      Flag indicating a drawItem is mid-destruction, similar to `destroying`.

      Note : This method should be called only after the underlying component has been created.

      Returns:
        Boolean
      Throws:
        `java.lang.IllegalStateException` - if the underlying component has not yet been created.

    - #### setDragStartDistance

          public void setDragStartDistance(int dragStartDistance)

      Number of pixels the cursor needs to move before the EventHandler starts a drag operation.

      Note : This is an advanced setting

      Parameters:
        `dragStartDistance` - Default value is 5
      See Also:
        `Dragdrop overview and related methods`

    - #### getDragStartDistance

          public int getDragStartDistance()

      Number of pixels the cursor needs to move before the EventHandler starts a drag operation.
      Returns:
        int
      See Also:
        `Dragdrop overview and related methods`

    - #### setDrawGroup

          public void setDrawGroup(DrawGroup drawGroup)
                            throws java.lang.IllegalStateException

      `DrawGroup` this drawItem is a member of.
      Parameters:
        `drawGroup` - Default value is null
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getDrawGroup

          public DrawGroup getDrawGroup()

      `DrawGroup` this drawItem is a member of.
      Returns:
        DrawGroup

    - #### setDrawPane

          public void setDrawPane(DrawPane drawPane)

      `DrawPane` this drawItem should draw in.

      If this item has a `DrawGroup`, the drawGroup's drawPane is automatically used.
      If this method is called after the component has been drawn/initialized: Setter for `drawPane`.

      Parameters:
        `drawPane` - new value for `this.drawPane`.. Default value is null

    - #### getDrawPane

          public DrawPane getDrawPane()

      `DrawPane` this drawItem should draw in.

      If this item has a `DrawGroup`, the drawGroup's drawPane is automatically used.

      Returns:
        DrawPane

    - #### setEditProxyConstructor

          public void setEditProxyConstructor(java.lang.String editProxyConstructor)
                                       throws java.lang.IllegalStateException

      Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
      Parameters:
        `editProxyConstructor` - See `SCClassName` . Default value is "DrawItemEditProxy"
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getEditProxyConstructor

          public java.lang.String getEditProxyConstructor()

      Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
      Returns:
        See `SCClassName`

    - #### setEndArrow

          public void setEndArrow(ArrowStyle endArrow)

      Style of arrowhead to draw at the end of the line or path.
      If this method is called after the component has been drawn/initialized: Set the arrowhead at the end of this path.

      NOTE: Not all DrawItem classes support arrowheads. You can use `DrawItem.supportsEndArrow()` to dynamically check whether a DrawItem instance supports this method.

      Parameters:
        `endArrow` - style of arrow to use. Default value is null

    - #### getEndArrow

          public ArrowStyle getEndArrow()

      Style of arrowhead to draw at the end of the line or path.
      Returns:
        ArrowStyle

    - #### getEndKnob

          public DrawKnob getEndKnob()
                              throws java.lang.IllegalStateException

      If this item is showing `KnobType.ENDPOINT` `control knobs`, this attribute specifies the AutoChild for the `DrawKnob` for end point of current drawItem.

      For an overview of how to use and configure AutoChildren, see `Using AutoChildren`.

      Returns:
        DrawKnob
      Throws:
        `java.lang.IllegalStateException` - if the underlying component has not yet been created.

    - #### setEventOpaque

          public void setEventOpaque(boolean eventOpaque)
                              throws java.lang.IllegalStateException

      Should events inside this DrawItem be attributed to it regardless of which pixels are actually set, if no fill is specified? If set for DrawItems that aren't closed, will capture events occurring in the region that would filled if a fill were specified. This property is true by default for closed shapes, and false for paths, lines, etc.

      Note : This is an advanced setting

      Parameters:
        `eventOpaque` - Default value is varies
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `setFillColor(java.lang.String)`, `setFillOpacity(float)`

    - #### getEventOpaque

          public boolean getEventOpaque()

      Should events inside this DrawItem be attributed to it regardless of which pixels are actually set, if no fill is specified? If set for DrawItems that aren't closed, will capture events occurring in the region that would filled if a fill were specified. This property is true by default for closed shapes, and false for paths, lines, etc.
      Returns:
        boolean
      See Also:
        `getFillColor()`, `getFillOpacity()`

    - #### setFillColor

          public void setFillColor(java.lang.String fillColor)

      Fill color to use for shapes. The default of 'null' is transparent.
      If this method is called after the component has been drawn/initialized: Update fillColor for this drawItem.
      Parameters:
        `fillColor` - new fillColor to use. Pass null for transparent. See `CSSColor` . Default value is null

    - #### getFillColor

          public java.lang.String getFillColor()

      Fill color to use for shapes. The default of 'null' is transparent.
      Returns:
        See `CSSColor`

    - #### setFillGradient

          public void setFillGradient(Gradient fillGradient)

      Fill gradient to use for shapes. If a string it uses the gradient identifier parameter provided in `DrawPane.addGradient()`. Otherwise it expects one of `SimpleGradient`, `LinearGradient` or `RadialGradient`.
      If this method is called after the component has been drawn/initialized: Update fillGradient for this drawItem.
      Parameters:
        `fillGradient` - new gradient to use. Pass null for transparent.. Default value is null
      See Also:
        `Gradient`

    - #### getFillGradient

          public Gradient getFillGradient()

      Fill gradient to use for shapes. If a string it uses the gradient identifier parameter provided in `DrawPane.addGradient()`. Otherwise it expects one of `SimpleGradient`, `LinearGradient` or `RadialGradient`.
      Returns:
        Gradient
      See Also:
        `Gradient`

    - #### setFillGradient

          public void setFillGradient(java.lang.String fillGradient)

      Fill gradient to use for shapes. If a string it uses the gradient identifier parameter provided in `DrawPane.addGradient()`. Otherwise it expects one of `SimpleGradient`, `LinearGradient` or `RadialGradient`.
      If this method is called after the component has been drawn/initialized: Update fillGradient for this drawItem.
      Parameters:
        `fillGradient` - new gradient to use. Pass null for transparent.. Default value is null
      See Also:
        `Gradient`

    - #### getFillGradientAsString

          public java.lang.String getFillGradientAsString()

      Fill gradient to use for shapes. If a string it uses the gradient identifier parameter provided in `DrawPane.addGradient()`. Otherwise it expects one of `SimpleGradient`, `LinearGradient` or `RadialGradient`.
      Returns:
        String
      See Also:
        `Gradient`

    - #### setFillOpacity

          public void setFillOpacity(float fillOpacity)

      Opacity of the fillColor, as a number between 0 (transparent) and 1 (opaque).
      If this method is called after the component has been drawn/initialized: Update fillOpacity for this drawItem.
      Parameters:
        `fillOpacity` - new opacity, as a number between 0 (transparent) and 1 (opaque).. Default value is 1.0

    - #### getFillOpacity

          public float getFillOpacity()

      Opacity of the fillColor, as a number between 0 (transparent) and 1 (opaque).
      Returns:
        float

    - #### setHoverDelay

          public void setHoverDelay(int hoverDelay)

      If `this.canHover` is true, how long should the mouse be kept over this widget before the hover event is fired
      Parameters:
        `hoverDelay` - Default value is 300
      See Also:
        `setCanHover(java.lang.Boolean)`, `hover()`

    - #### getHoverDelay

          public int getHoverDelay()

      If `this.canHover` is true, how long should the mouse be kept over this widget before the hover event is fired
      Returns:
        int
      See Also:
        `getCanHover()`, `hover()`

    - #### setKeepInParentRect

          public void setKeepInParentRect(java.lang.Boolean keepInParentRect)

      Constrains drag-resizing and drag-repositioning of this draw item to either the current visible area of the `draw pane` or an arbitrary bounding box (if set to an array of the form `[left, top, left + width, top + height]`). When using a bounding box-type argument the left/top values can be negative, or the width/height values can be greater than the dimensions of the viewable area, to allow positioning or resizing the draw item beyond the confines of the draw pane.

      Note: keepInParentRect affects only user drag interactions, not programmatic moves or resizes.

      Note : This is an advanced setting

      Parameters:
        `keepInParentRect` - Default value is null

    - #### getKeepInParentRect

          public java.lang.Boolean getKeepInParentRect()

      Constrains drag-resizing and drag-repositioning of this draw item to either the current visible area of the `draw pane` or an arbitrary bounding box (if set to an array of the form `[left, top, left + width, top + height]`). When using a bounding box-type argument the left/top values can be negative, or the width/height values can be greater than the dimensions of the viewable area, to allow positioning or resizing the draw item beyond the confines of the draw pane.

      Note: keepInParentRect affects only user drag interactions, not programmatic moves or resizes.

      Returns:
        Boolean

    - #### setKeepInParentRect

          public void setKeepInParentRect(float... keepInParentRect)

      Constrains drag-resizing and drag-repositioning of this draw item to either the current visible area of the `draw pane` or an arbitrary bounding box (if set to an array of the form `[left, top, left + width, top + height]`). When using a bounding box-type argument the left/top values can be negative, or the width/height values can be greater than the dimensions of the viewable area, to allow positioning or resizing the draw item beyond the confines of the draw pane.

      Note: keepInParentRect affects only user drag interactions, not programmatic moves or resizes.

      Note : This is an advanced setting

      Parameters:
        `keepInParentRect` - Default value is null

    - #### setKnobs

          public void setKnobs(KnobType... knobs)
                        throws java.lang.IllegalStateException

      Array of control knobs to display for this item. Each `KnobType` specified in this array will turn on UI element(s) allowing the user to manipulate this drawItem. To update the set of knobs at runtime use `DrawItem.showKnobs()` and `DrawItem.hideKnobs()`.

      NOTE: Unless otherwise documented, DrawItem types only support `KnobType.RESIZE` and `KnobType.MOVE` knobs.

      Parameters:
        `knobs` - Default value is null
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        Diagramming Example

    - #### getKnobs

          public KnobType[] getKnobs()

      Array of control knobs to display for this item. Each `KnobType` specified in this array will turn on UI element(s) allowing the user to manipulate this drawItem. To update the set of knobs at runtime use `DrawItem.showKnobs()` and `DrawItem.hideKnobs()`.

      NOTE: Unless otherwise documented, DrawItem types only support `KnobType.RESIZE` and `KnobType.MOVE` knobs.

      Returns:
        KnobType...
      See Also:
        Diagramming Example

    - #### setLineCap

          public void setLineCap(LineCap lineCap)

      Style of drawing the endpoints of a line.

      Note that for dashed and dotted lines, the lineCap style affects each dash or dot.
      If this method is called after the component has been drawn/initialized: Update lineCap for this drawItem.

      Parameters:
        `lineCap` - new lineCap to use. Default value is "round"

    - #### getLineCap

          public LineCap getLineCap()

      Style of drawing the endpoints of a line.

      Note that for dashed and dotted lines, the lineCap style affects each dash or dot.

      Returns:
        LineCap

    - #### setLineColor

          public void setLineColor(java.lang.String lineColor)

      Line color
      If this method is called after the component has been drawn/initialized: Update lineColor for this drawItem.
      Parameters:
        `lineColor` - new line color. Pass null for transparent. See `CSSColor` . Default value is "#808080"

    - #### getLineColor

          public java.lang.String getLineColor()

      Line color
      Returns:
        See `CSSColor`

    - #### setLineOpacity

          public void setLineOpacity(float lineOpacity)

      Opacity for lines, as a number between 0 (transparent) and 1 (opaque).
      If this method is called after the component has been drawn/initialized: Update lineOpacity for this drawItem.
      Parameters:
        `lineOpacity` - new opacity, as a number between 0 (transparent) and 1 (opaque).. Default value is 1.0

    - #### getLineOpacity

          public float getLineOpacity()

      Opacity for lines, as a number between 0 (transparent) and 1 (opaque).
      Returns:
        float

    - #### setLinePattern

          public void setLinePattern(LinePattern linePattern)

      Pattern for lines, eg "solid" or "dash".

      Note that support in old browsers, such as Internet Explorer versions before IE11, is limited for `drawingType` "bitmap" to items with straight edges - `DrawLine`s, `DrawPath`s, and `DrawRect`s with no `rounding`.
      If this method is called after the component has been drawn/initialized: Update linePattern for this drawItem.

      Parameters:
        `linePattern` - new linePattern to use. Default value is "solid"

    - #### getLinePattern

          public LinePattern getLinePattern()

      Pattern for lines, eg "solid" or "dash".

      Note that support in old browsers, such as Internet Explorer versions before IE11, is limited for `drawingType` "bitmap" to items with straight edges - `DrawLine`s, `DrawPath`s, and `DrawRect`s with no `rounding`.

      Returns:
        LinePattern

    - #### setLineWidth

          public void setLineWidth(int lineWidth)

      Pixel width for lines.
      If this method is called after the component has been drawn/initialized: Update lineWidth for this drawItem.
      Parameters:
        `lineWidth` - new pixel lineWidth. Default value is 3

    - #### getLineWidth

          public int getLineWidth()

      Pixel width for lines.
      Returns:
        int

    - #### getMoveKnob

          public DrawKnob getMoveKnob()
                               throws java.lang.IllegalStateException

      If this item is showing `KnobType.MOVE` `control knobs`, this attribute specifies the AutoChild for the `DrawKnob` that allows a user to move the DrawItem with help of a knob located at `moveKnobPoint`. Default move knob shape is green circle.

      For an overview of how to use and configure AutoChildren, see `Using AutoChildren`.

      Returns:
        DrawKnob
      Throws:
        `java.lang.IllegalStateException` - if the underlying component has not yet been created.

    - #### setMoveKnobOffset

          public void setMoveKnobOffset(int[] moveKnobOffset)

      If this item is showing a `"move"` `control knob`, this attribute allows you to specify an offset in pixels from the `moveKnobPoint` for the move knob. Offset should be specified as a 2-element array of [left offset, top offset].

      This offset overrides the built-in offset used when showing both resize and move knobs.
      If this method is called after the component has been drawn/initialized: Setter for `moveKnobOffset`.

      Note : This is an advanced setting

      Parameters:
        `moveKnobOffset` - the new move knob offset. This is a 2-element array of [left offset, top offset]. If null, then `new int[] {0, 0}` is assumed.. Default value is null
      See Also:
        `setMoveKnobPoint(com.smartgwt.client.types.MoveKnobPoint)`

    - #### getMoveKnobOffset

          public int[] getMoveKnobOffset()

      If this item is showing a `"move"` `control knob`, this attribute allows you to specify an offset in pixels from the `moveKnobPoint` for the move knob. Offset should be specified as a 2-element array of [left offset, top offset].

      This offset overrides the built-in offset used when showing both resize and move knobs.

      Returns:
        int[]
      See Also:
        `getMoveKnobPoint()`

    - #### setMoveKnobPoint

          public void setMoveKnobPoint(MoveKnobPoint moveKnobPoint)
                                throws java.lang.IllegalStateException

      If this item is showing a `KnobType.MOVE` `control knob`, this attribute specifies where the knob should appear with respect to the draw item.

      The resize and move knobs show at the same position by default. However, when both knobs are shown the move knob is offset slightly to allow access to both. This position can be adjusted manually with `moveKnobOffset`.

      Parameters:
        `moveKnobPoint` - Default value is "TL"
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `setMoveKnobOffset(int[])`

    - #### getMoveKnobPoint

          public MoveKnobPoint getMoveKnobPoint()

      If this item is showing a `KnobType.MOVE` `control knob`, this attribute specifies where the knob should appear with respect to the draw item.

      The resize and move knobs show at the same position by default. However, when both knobs are shown the move knob is offset slightly to allow access to both. This position can be adjusted manually with `moveKnobOffset`.

      Returns:
        MoveKnobPoint
      See Also:
        `getMoveKnobOffset()`

    - #### setPrompt

          public void setPrompt(java.lang.String prompt)

      Default `hover HTML` that is displayed in the global hover canvas if the user hovers over this DrawItem and `showHover` is true.
      Parameters:
        `prompt` - See `HTMLString` . Default value is null

    - #### getPrompt

          public java.lang.String getPrompt()

      Default `hover HTML` that is displayed in the global hover canvas if the user hovers over this DrawItem and `showHover` is true.
      Returns:
        See `HTMLString`

    - #### setProportionalResizing

          public void setProportionalResizing(ProportionalResizeMode proportionalResizing)
                                       throws java.lang.IllegalStateException

      This property specifies the conditions for when proportional resizing is used.

      By default the DrawItem is forced to only resize proportionally while any modifier key specified in `proportionalResizeModifiers` is pressed. For example, the DrawItem will change its width and height by the same percentage as long as the "Shift" key is held down.

      Note that this property only has an effect if the DrawItem is showing `KnobType.RESIZE` `control knobs`.

      Parameters:
        `proportionalResizing` - Default value is "modifier"
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getProportionalResizing

          public ProportionalResizeMode getProportionalResizing()

      This property specifies the conditions for when proportional resizing is used.

      By default the DrawItem is forced to only resize proportionally while any modifier key specified in `proportionalResizeModifiers` is pressed. For example, the DrawItem will change its width and height by the same percentage as long as the "Shift" key is held down.

      Note that this property only has an effect if the DrawItem is showing `KnobType.RESIZE` `control knobs`.

      Returns:
        ProportionalResizeMode

    - #### setResizeKnobPoints

          public void setResizeKnobPoints(ResizeKnobPoint... resizeKnobPoints)
                                   throws java.lang.IllegalStateException

      If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the points with respect to the draw item where resize knobs should appear.
      Parameters:
        `resizeKnobPoints` - Default value is ["TL","TR","BL","BR","T","R","B","L"]
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getResizeKnobPoints

          public ResizeKnobPoint[] getResizeKnobPoints()

      If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the points with respect to the draw item where resize knobs should appear.
      Returns:
        ResizeKnobPoint...

    - #### getResizeOutline

          public DrawRect getResizeOutline()
                                    throws java.lang.IllegalStateException

      If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the AutoChild for the `DrawRect` that draws a rectangle frame which connects all resize knobs of current DrawItem.

      For an overview of how to use and configure AutoChildren, see `Using AutoChildren`.

      Returns:
        DrawRect
      Throws:
        `java.lang.IllegalStateException` - if the underlying component has not yet been created.

    - #### setResizeViaLocalTransformOnly

          public void setResizeViaLocalTransformOnly(boolean resizeViaLocalTransformOnly)
                                              throws java.lang.IllegalStateException

      If this DrawItem is showing `KnobType.RESIZE` `control knobs`, should resizing the shape solely update the local transform (for example, the DrawItem's `scale` or `translation`)?.

      The default is `false`, which means that the DrawItem is allowed to modify its shape properties in order to fit within a given width and height. Some examples:

      - A `DrawOval` might decrease its `radius` when resized to a smaller size.
      - A `DrawPath` might change its `points` to lengthen all line segments in the path by some proportion so that it fits into a larger size.
      This approach allows a DrawItem to maintain the same `line width` even as it is being resized.

      If this property is set to `true` then all visual aspects of the DrawItem, including the line width and the fill, will be magnified or reduced during resizes as if the DrawItem were placed under a lens.

      Parameters:
        `resizeViaLocalTransformOnly` - Default value is false
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getResizeViaLocalTransformOnly

          public boolean getResizeViaLocalTransformOnly()

      If this DrawItem is showing `KnobType.RESIZE` `control knobs`, should resizing the shape solely update the local transform (for example, the DrawItem's `scale` or `translation`)?.

      The default is `false`, which means that the DrawItem is allowed to modify its shape properties in order to fit within a given width and height. Some examples:

      - A `DrawOval` might decrease its `radius` when resized to a smaller size.
      - A `DrawPath` might change its `points` to lengthen all line segments in the path by some proportion so that it fits into a larger size.
      This approach allows a DrawItem to maintain the same `line width` even as it is being resized.

      If this property is set to `true` then all visual aspects of the DrawItem, including the line width and the fill, will be magnified or reduced during resizes as if the DrawItem were placed under a lens.

      Returns:
        boolean

    - #### setRotation

          public void setRotation(float rotation)
                           throws java.lang.IllegalStateException

      Deprecated. `GwtFloatVsDouble`
      Rotation in degrees about the `center point`. The positive direction is clockwise.
      Parameters:
        `rotation` - Default value is 0.0
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getRotation

          public float getRotation()

      Deprecated. `GwtFloatVsDouble`
      Rotation in degrees about the `center point`. The positive direction is clockwise.
      Returns:
        float

    - #### setRotation

          public void setRotation(double rotation)
                           throws java.lang.IllegalStateException

      Rotation in degrees about the `center point`. The positive direction is clockwise.
      Parameters:
        `rotation` - Default value is 0.0
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getRotationAsDouble

          public double getRotationAsDouble()

      Rotation in degrees about the `center point`. The positive direction is clockwise.
      Returns:
        double

    - #### setScale

          public void setScale(int[] scale)
                        throws java.lang.IllegalStateException

      Array holds 2 values representing scaling along x and y dimensions.

      Note : This is an advanced setting

      Parameters:
        `scale` - Default value is null
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getScale

          public int[] getScale()

      Array holds 2 values representing scaling along x and y dimensions.
      Returns:
        int[]

    - #### setShadow

          public void setShadow(Shadow shadow)

      Shadow used for all DrawItem subtypes.
      If this method is called after the component has been drawn/initialized: Update shadow for this drawItem.
      Parameters:
        `shadow` - new shadow. Default value is null

    - #### getShadow

          public Shadow getShadow()

      Shadow used for all DrawItem subtypes.
      Returns:
        Shadow

    - #### setShowHover

          public void setShowHover(boolean showHover)

      If `canHover` is true, should we show the global hover canvas by default when the user hovers over this DrawItem?
      Parameters:
        `showHover` - Default value is true
      See Also:
        `getHoverHTML()`

    - #### getShowHover

          public boolean getShowHover()

      If `canHover` is true, should we show the global hover canvas by default when the user hovers over this DrawItem?
      Returns:
        boolean
      See Also:
        `getHoverHTML()`

    - #### setShowResizeOutline

          public void setShowResizeOutline(boolean showResizeOutline)

      If this item is showing `KnobType.RESIZE` `control knobs` will the resize outline be shown or not.
      Parameters:
        `showResizeOutline` - Default value is true
      See Also:
        `com.smartgwt.client.widgets.drawing.DrawItem#setResizeOutline`

    - #### getShowResizeOutline

          public boolean getShowResizeOutline()

      If this item is showing `KnobType.RESIZE` `control knobs` will the resize outline be shown or not.
      Returns:
        boolean
      See Also:
        `getResizeOutline()`

    - #### getSideResizeKnob

          public DrawKnob getSideResizeKnob()

      Note : This API is non-functional (always returns null) and exists only to make you aware that this MultiAutoChild exists. See `Using AutoChildren` for details.

      If this item is showing `KnobType.RESIZE` `control knobs`, this attribute specifies the MultiAutoChild for the `DrawKnob` that allows a user to resize the DrawItem with help of knobs located at centers of edges of a bounding rectangle of current DrawItem. Default shape is red square.

      Returns:
        null

    - #### setStartArrow

          public void setStartArrow(ArrowStyle startArrow)

      Style of arrowhead to draw at the beginning of the line or path.
      If this method is called after the component has been drawn/initialized: Set the arrowhead at the beginning of this path.

      NOTE: Not all DrawItem classes support arrowheads. You can use `DrawItem.supportsStartArrow()` to dynamically check whether a DrawItem instance supports this method.

      Parameters:
        `startArrow` - style of arrow to use. Default value is null

    - #### getStartArrow

          public ArrowStyle getStartArrow()

      Style of arrowhead to draw at the beginning of the line or path.
      Returns:
        ArrowStyle

    - #### getStartKnob

          public DrawKnob getStartKnob()
                                throws java.lang.IllegalStateException

      If this item is showing `KnobType.STARTPOINT` `control knobs`, this attribute specifies the AutoChild for the `DrawKnob` for start point of current drawItem.

      For an overview of how to use and configure AutoChildren, see `Using AutoChildren`.

      Returns:
        DrawKnob
      Throws:
        `java.lang.IllegalStateException` - if the underlying component has not yet been created.

    - #### setTranslate

          public void setTranslate(int[] translate)
                            throws java.lang.IllegalStateException

      Array holds two values representing translation along the x and y dimensions.

      Note : This is an advanced setting

      Parameters:
        `translate` - Default value is null
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getTranslate

          public int[] getTranslate()

      Array holds two values representing translation along the x and y dimensions.
      Returns:
        int[]

    - #### setXShearFactor

          public void setXShearFactor(double xShearFactor)
                               throws java.lang.IllegalStateException

      The slope of an x-shearing transformation applied to this DrawItem. Each point in the shape is moved along the x-axis a distance that is proportional to the initial y-coordinate of the point.

      Note : This is an advanced setting

      Parameters:
        `xShearFactor` - Default value is 0.0
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getXShearFactor

          public double getXShearFactor()

      The slope of an x-shearing transformation applied to this DrawItem. Each point in the shape is moved along the x-axis a distance that is proportional to the initial y-coordinate of the point.
      Returns:
        double

    - #### setYShearFactor

          public void setYShearFactor(double yShearFactor)
                               throws java.lang.IllegalStateException

      The slope of a y-shearing transformation applied to this DrawItem. Each point in the shape is moved along the y-axis a distance that is proportional to the initial x-coordinate of the point.

      Note : This is an advanced setting

      Parameters:
        `yShearFactor` - Default value is 0.0
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getYShearFactor

          public double getYShearFactor()

      The slope of a y-shearing transformation applied to this DrawItem. Each point in the shape is moved along the y-axis a distance that is proportional to the initial x-coordinate of the point.
      Returns:
        double

    - #### addClickHandler

          public com.google.gwt.event.shared.HandlerRegistration addClickHandler(ClickHandler handler)

      Add a click handler.

      Notification fired when the user clicks on this DrawItem.

      Note that if this item is part of a `DrawGroup`, then the group's `useGroupRect` setting affects whether this item receives the notification. If useGroupRect is true, then this item will not receive the notification. Otherwise, the item receives the notification and notification bubbles up to the group.

      Specified by:
        `addClickHandler` in interface `HasClickHandlers`
      Parameters:
        `handler` - the click handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### dragResizeMove

          public void dragResizeMove(java.lang.String position,
                            java.lang.Integer x,
                            java.lang.Integer y,
                            java.lang.Integer dX,
                            java.lang.Integer dY)

      If `canDrag` is true and the `control knobs` include "resize" knobs, then this notification method will be fired when the user drag-resizes the draw item.
      Parameters:
        `position` - provides which knob of the `resizeKnobPoints` was dragged
        `x` - new x-coordinate of the knob
        `y` - new y-coordinate of the knob
        `dX` - horizontal distance moved
        `dY` - vertical distance moved

    - #### draw

          public void draw()

      Draw this item into its current `DrawPane`.

    - #### erase

          public void erase()

      Erase this drawItem's visual representation and remove it from its DrawGroup (if any) and DrawPane.

      To re-draw the item within the DrawPane, call `DrawItem.draw()` again, or use `DrawPane.addDrawItem()` to move to another DrawGroup.

    - #### getCenter

          public Point getCenter()

      Returns the center point of the `bounding box`.
      Returns:
        the center point

    - #### getHoverHTML

          public java.lang.String getHoverHTML()

      If `showHover` is true, when the user holds the mouse over this DrawItem for long enough to trigger a hover event, a hover canvas is shown by default. This method returns the contents of that hover canvas. Default implementation returns `prompt` - override for custom hover HTML. Note that returning `null` or an empty string will suppress the hover canvas altogether.
      Returns:
        the HTML to show in the hover

    - #### getPageLeft

          public int getPageLeft()

      Returns the page-relative left coordinate of the widget on the page, in pixels.
      Returns:
        global left coordinate
      See Also:
        `Positioning overview and related methods`

    - #### getPageTop

          public int getPageTop()

      Returns the page-relative top coordinate of the widget on the page, in pixels
      Returns:
        GLOBAL top coordinate
      See Also:
        `Positioning overview and related methods`

    - #### getSvgString

          public void getSvgString()

      Generates a string containing the SVG source of this DrawItem.

      NOTE: The generated SVG source assumes that the default namespace is `http://www.w3.org/2000/svg` and that namespace prefix `xlink` refers to namespace name `http://www.w3.org/1999/xlink`.

    - #### hide

          public void hide()

      Hide this drawItem.

    - #### hideAllKnobs

          public void hideAllKnobs()

      Hides all control knobs for this drawItem. Updates `knobs` to remove all knobTypes and clears any drawn knobs.

    - #### hideKnobs

          public void hideKnobs(KnobType knobType)

      Hides a set of control knobs for this drawItem. Updates `knobs` to remove the specified knobType, and clears any drawn knobs for this knobType.
      Parameters:
        `knobType` - knobs to hide

    - #### hideKnobs

          public void hideKnobs(KnobType... knobType)

      Hides a set of control knobs for this drawItem. Updates `knobs` to remove the specified knobType, and clears any drawn knobs for this knobType.
      Parameters:
        `knobType` - knobs to hide

    - #### hover

          public boolean hover()

      If `canHover` is true for this DrawItem, the hover() string method will be fired when the user hovers over this DrawItem. If this method returns false, it will suppress the default behavior of showing a hover canvas if `showHover` is true.
      Returns:
        false to cancel the hover event.

    - #### isInBounds

          public boolean isInBounds(int x,
                           int y)

      Returns true if the given point in the drawing coordinate system, when converted to coordinates in this DrawItem's local coordinate system, is within the `bounding box` of this DrawItem's shape.

      This method can be used to quickly check whether the given point is definitely not within the DrawItem shape. To check whether the point is within the DrawItem shape, use the slower but exact `DrawItem.isPointInPath()` method.

      Parameters:
        `x` - X coordinate of the point in the drawing coordinate system.
        `y` - Y coordinate of the point in the drawing coordinate system.
      Returns:

    - #### isPointInPath

          public boolean isPointInPath(int x,
                              int y)

      Returns true if the given point in the drawing coordinate system is within this DrawItem's shape, taking into account local transforms.
      Parameters:
        `x` - X coordinate of the test point.
        `y` - Y coordinate of the test point.
      Returns:

    - #### addMouseDownHandler

          public com.google.gwt.event.shared.HandlerRegistration addMouseDownHandler(MouseDownHandler handler)

      Add a mouseDown handler.

      Notification fired when the user presses the left mouse button on this DrawItem.

      Note that if this item is part of a `DrawGroup`, then the group's `useGroupRect` setting affects whether this item receives the notification. If useGroupRect is true, then this item will not receive the notification. Otherwise, the item receives the notification and notification bubbles up to the group.

      Specified by:
        `addMouseDownHandler` in interface `HasMouseDownHandlers`
      Parameters:
        `handler` - the mouseDown handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addMouseMoveHandler

          public com.google.gwt.event.shared.HandlerRegistration addMouseMoveHandler(MouseMoveHandler handler)

      Add a mouseMove handler.

      Notification fired when the user moves the mouse over this DrawItem.

      Note that if this item is part of a `DrawGroup`, then the group's `useGroupRect` setting affects whether this item receives the notification. If useGroupRect is true, then this item will not receive the notification. Otherwise, the item receives the notification and notification bubbles up to the group.

      Specified by:
        `addMouseMoveHandler` in interface `HasMouseMoveHandlers`
      Parameters:
        `handler` - the mouseMove handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addMouseOutHandler

          public com.google.gwt.event.shared.HandlerRegistration addMouseOutHandler(MouseOutHandler handler)

      Add a mouseOut handler.

      Notification fired when the mouse leaves this DrawItem.

      Note that if this item is part of a `DrawGroup`, then the group's `useGroupRect` setting affects whether this item receives the notification. If useGroupRect is true, then this item will not receive the notification. Otherwise, the item receives the notification and notification bubbles up to the group.

      Specified by:
        `addMouseOutHandler` in interface `HasMouseOutHandlers`
      Parameters:
        `handler` - the mouseOut handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addMouseOverHandler

          public com.google.gwt.event.shared.HandlerRegistration addMouseOverHandler(MouseOverHandler handler)

      Add a mouseOver handler.

      Notification fired when the mouse enters this DrawItem.

      Note that if this item is part of a `DrawGroup`, then the group's `useGroupRect` setting affects whether this item receives the notification. If useGroupRect is true, then this item will not receive the notification. Otherwise, the item receives the notification and notification bubbles up to the group.

      Specified by:
        `addMouseOverHandler` in interface `HasMouseOverHandlers`
      Parameters:
        `handler` - the mouseOver handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addMouseUpHandler

          public com.google.gwt.event.shared.HandlerRegistration addMouseUpHandler(MouseUpHandler handler)

      Add a mouseUp handler.

      Notification fired when the user releases the left mouse button on this DrawItem.

      Note that if this item is part of a `DrawGroup`, then the group's `useGroupRect` setting affects whether this item receives the notification. If useGroupRect is true, then this item will not receive the notification. Otherwise, the item receives the notification and notification bubbles up to the group.

      Specified by:
        `addMouseUpHandler` in interface `HasMouseUpHandlers`
      Parameters:
        `handler` - the mouseUp handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### moveBy

          public void moveBy(int dX,
                    int dY)

      Move the shape by the specified deltas for the left and top coordinate.
      Parameters:
        `dX` - change to left coordinate in pixels
        `dY` - change to top coordinate in pixels

    - #### addMovedHandler

          public com.google.gwt.event.shared.HandlerRegistration addMovedHandler(MovedHandler handler)

      Add a moved handler.

      Notification method fired when this component is explicitly moved. Note that a component's position on the screen may also be changed due to an ancestor being moved. The `parentMoved()` method provides a notification entry point to catch that case as well.

      Specified by:
        `addMovedHandler` in interface `HasMovedHandlers`
      Parameters:
        `handler` - the moved handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### moveTo

          public void moveTo(java.lang.Integer left,
                    java.lang.Integer top)

      Move the DrawItem to the specified coordinates in the global coordinate system. The specified coordinates will become the top-left point of the `resize bounding box`.
      Parameters:
        `left` - new left coordinate in pixels
        `top` - new top coordinate in pixels

    - #### addDragMoveHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragMoveHandler(DragMoveHandler handler)

      Add a dragMove handler.

      If `canDrag` is true, this notification method will be fired when the user drags the draw item.

      Specified by:
        `addDragMoveHandler` in interface `HasDragMoveHandlers`
      Parameters:
        `handler` - the dragMove handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDragResizeMoveHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragResizeMoveHandler(DragResizeMoveHandler handler)

      Add a dragResizeMove handler.

      If `canDrag` is true and the `control knobs` include "resize" knobs then this notification method will be fired when the user drags the resize knobs of the draw item.

      Specified by:
        `addDragResizeMoveHandler` in interface `HasDragResizeMoveHandlers`
      Parameters:
        `handler` - the dragResizeMove handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDragResizeStartHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragResizeStartHandler(DragResizeStartHandler handler)

      Add a dragResizeStart handler.

      If `canDrag` is true and the `control knobs` include "resize" knobs then this notification method will be fired when the user starts to drag the resize knobs of the draw item.

      Specified by:
        `addDragResizeStartHandler` in interface `HasDragResizeStartHandlers`
      Parameters:
        `handler` - the dragResizeStart handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDragResizeStopHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragResizeStopHandler(DragResizeStopHandler handler)

      Add a dragResizeStop handler.

      If `canDrag` is true and the `control knobs` include "resize" knobs then this notification method will be fired when the user completes a drag on the resize knobs of the draw item.

      Specified by:
        `addDragResizeStopHandler` in interface `HasDragResizeStopHandlers`
      Parameters:
        `handler` - the dragResizeStop handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDragStartHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragStartHandler(DragStartHandler handler)

      Add a dragStart handler.

      If `canDrag` is true, this notification method will be fired when the user starts to drag the draw item.

      Specified by:
        `addDragStartHandler` in interface `HasDragStartHandlers`
      Parameters:
        `handler` - the dragStart handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDragStopHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragStopHandler(DragStopHandler handler)

      Add a dragStop handler.

      If `canDrag` is true, this notification method will be fired when the user completes a drag on the draw item.

      Specified by:
        `addDragStopHandler` in interface `HasDragStopHandlers`
      Parameters:
        `handler` - the dragStop handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### resizeBy

          public void resizeBy(int dX,
                      int dY)

      Resize the shape by the specified deltas.
      Parameters:
        `dX` - number of pixels to resize by horizontally
        `dY` - number of pixels to resize by vertically

    - #### addResizedHandler

          public com.google.gwt.event.shared.HandlerRegistration addResizedHandler(ResizedHandler handler)

      Add a resized handler.

      Observable method called whenever a DrawItem changes size.

      Specified by:
        `addResizedHandler` in interface `HasResizedHandlers`
      Parameters:
        `handler` - the resized handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### resizeTo

          public void resizeTo(java.lang.Integer width,
                      java.lang.Integer height)

      Resize to the specified size
      Parameters:
        `width` - new width
        `height` - new height

    - #### rotateBy

          public void rotateBy(double degrees)

      Rotate the shape by the relative rotation in degrees
      Parameters:
        `degrees` - number of degrees to rotate from current orientation.

    - #### rotateTo

          public void rotateTo(double degrees)

      Rotate the shape by the absolute rotation in degrees
      Parameters:
        `degrees` - number of degrees to rotate

    - #### scaleBy

          public void scaleBy(double x,
                     double y)

      Scale the shape by the x, y multipliers
      Parameters:
        `x` - scale in the x direction
        `y` - scale in the y direction

    - #### scaleTo

          public void scaleTo(double x,
                     double y)

      Scale the shape by the x, y multipliers
      Parameters:
        `x` - scale in the x direction
        `y` - scale in the y direction

    - #### setCenterPoint

          public void setCenterPoint(int left,
                            int top)

      Change the center point for this DrawItem.
      Parameters:
        `left` - X coordinate of the center point (in the global coordinate system).
        `top` - Y coordinate of the center point (in the global coordinate system).

    - #### setPropertyValue

          public void setPropertyValue(java.lang.String propertyName,
                              java.lang.Object newValue)

      Sets a property on this DrawItem, calling the appropriate setter method if one is found and is supported.
      Parameters:
        `propertyName` - name of the property to set
        `newValue` - new value for the property

    - #### show

          public void show()

      Make this drawItem visible.

    - #### showAllKnobs

          public void showAllKnobs()

      Shows all supported control knobs for this drawItem. Updates `knobs` to include the supported knobTypes and if necessary draws out the appropriate control knobs.

    - #### addShowContextMenuHandler

          public com.google.gwt.event.shared.HandlerRegistration addShowContextMenuHandler(ShowContextMenuHandler handler)

      Add a showContextMenu handler.

      Executed when the right mouse button is clicked. The default implementation of this method auto-creates a `Menu` from the `contextMenu` property on this component and then calls `Menu.showContextMenu()` on it to show it.

      If you want to show a standard context menu, you can simply define your Menu and set it as the contextMenu property on your component - you do not need to override this method.

      If you want to do some other processing before showing a menu or do something else entirely, then you should override this method. Note that the return value from this method controls whether or not the native browser context menu is shown.

      Specified by:
        `addShowContextMenuHandler` in interface `HasShowContextMenuHandlers`
      Parameters:
        `handler` - the showContextMenu handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### showKnobs

          public void showKnobs(KnobType knobType)

      Shows a set of control knobs for this drawItem. Updates `knobs` to include the specified knobType, and if necessary draws out the appropriate control knobs.
      Parameters:
        `knobType` - knobs to show

    - #### showKnobs

          public void showKnobs(KnobType... knobType)

      Shows a set of control knobs for this drawItem. Updates `knobs` to include the specified knobType, and if necessary draws out the appropriate control knobs.
      Parameters:
        `knobType` - knobs to show

    - #### supportsEndArrow

          public boolean supportsEndArrow()

      Does this DrawItem support `DrawItem.setEndArrow()`? For example, this is false for `DrawRect` and `DrawOval`, and true for `DrawLine`.
      Returns:
        whether setEndArrow() is supported by this DrawItem.

    - #### supportsStartArrow

          public boolean supportsStartArrow()

      Does this DrawItem support `DrawItem.setStartArrow()`? For example, this is false for `DrawRect` and `DrawOval`, and true for `DrawLine`.
      Returns:
        whether setStartArrow() is supported by this DrawItem.

    - #### setDefaultProperties

          public static void setDefaultProperties(DrawItem drawItemProperties)

      Class level method to set the default properties of this class. If set, then all existing and subsequently created instances of this class will automatically have default properties corresponding to the properties set on the SmartGWT class instance passed to this function before its underlying SmartClient JS object was created. This is a powerful feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default properties of this class. Can also be used for skinning / styling purposes.

      Note: This method is intended for setting default attributes only and will affect all instances of the underlying class (including those automatically generated in JavaScript). This method should not be used to apply standard EventHandlers or override methods for a class - use a custom subclass instead. Calling this method after instances have been created can result in undefined behavior, since it bypasses any setters and a class instance may have already examined a particular property and not be expecting any changes through this route.

      Parameters:
        `drawItemProperties` - properties that should be used as new defaults when instances of this class are created

    - #### getRef

          public static DrawItem getRef(com.google.gwt.core.client.JavaScriptObject jsObj)

    - #### computeAngle

          public static float computeAngle(double px1,
                           double py1,
                           double px2,
                           double py2)

      Deprecated. `GwtFloatVsDouble`
      Computes the angle in degrees from the positive X axis to the difference vector v2 - v1 between the two given vectors.
      Parameters:
        `px1` - X coordinate of v1
        `py1` - Y coordinate of v1
        `px2` - X coordinate of v2
        `py2` - Y coordinate of v2
      Returns:
        the angle in degrees, in the range [0, 360).

    - #### computeAngleAsDouble

          public static double computeAngleAsDouble(double px1,
                                    double py1,
                                    double px2,
                                    double py2)

      Computes the angle in degrees from the positive X axis to the difference vector v2 - v1 between the two given vectors.
      Parameters:
        `px1` - X coordinate of v1
        `py1` - Y coordinate of v1
        `px2` - X coordinate of v2
        `py2` - Y coordinate of v2
      Returns:
        the angle in degrees, in the range [0, 360).

    - #### getBoundingBoxAsDouble

          public java.lang.Double[] getBoundingBoxAsDouble()

      Returns the startPoint endPoint
      Returns:
        x1, y1, x2, y2 coordinates

    - #### getBoundingBox

          public int[] getBoundingBox()

      Returns the startPoint endPoint
      Returns:
        x1, y1, x2, y2 coordinates

    - #### getResizeBoundingBoxAsDouble

          public java.lang.Double[] getResizeBoundingBoxAsDouble()

      Returns the bounding box of the shape reflected by the `resize outline` shown when dragging the `resize knobs`. This method is similar to `getBoundingBoxAsDouble` except that the coordinates returned by this method are in the global coordinate system (described `here`).
      Returns:
        The x1, y1, x2, y2 coordinates. When the width and height are both positive, point (x1, y1) is the top-left point of the bounding box and point (x2, y2) is the bottom-right point of the bounding box.
      See Also:
        `getBoundingBoxAsDouble()`

    - #### getResizeBoundingBox

          public int[] getResizeBoundingBox()

      Returns the bounding box of the shape reflected by the `resize outline` shown when dragging the `resize knobs`. This method is similar to `getBoundingBox` except that the coordinates returned by this method are in the global coordinate system (described `here`).
      Returns:
        The x1, y1, x2, y2 coordinates. When the width and height are both positive, point (x1, y1) is the top-left point of the bounding box and point (x2, y2) is the bottom-right point of the bounding box.
      See Also:
        `getBoundingBox()`

    - #### getAttributeAsIntArray

          protected int[] getAttributeAsIntArray(java.lang.String property)

    - #### setAttribute

          protected void setAttribute(java.lang.String attribute,
                          java.lang.Float[] value,
                          boolean allowPostCreate)

      Overrides:
        `setAttribute` in class `BaseClass`

    - #### setAttribute

          protected void setAttribute(java.lang.String attribute,
                          float[] value,
                          boolean allowPostCreate)

      Overrides:
        `setAttribute` in class `BaseClass`

    - #### setAutoChildConstructor

          public void setAutoChildConstructor(java.lang.String autoChildName,
                                     java.lang.String className)

      Sets the SmartClient constructor for the AutoChild named `autoChildName`.
      Parameters:
        `autoChildName` - the name of the AutoChild
        `className` - the SmartClient class name to use when constructing the AutoChild.
      See Also:
        `AutoChildUsage`

    - #### setAutoChildProperties

          public void setAutoChildProperties(java.lang.String autoChildName,
                                    Canvas properties)
                                      throws java.lang.IllegalStateException

      Sets the properties for creating a `Canvas` AutoChild named `autoChildName`.

      `properties` must not have already been created (`properties.isCreated()` must be `false`).

      NOTE: Overrides at override points are not applied to AutoChildren created from `properties`; that is, if the Java `Class` of `properties` overrides a Smart GWT override point, the custom method implementation will not be called.

      Throws:
        `java.lang.IllegalStateException` - if `properties` has been created.
      See Also:
        `AutoChildUsage`

    - #### setAutoChildProperties

          public void setAutoChildProperties(java.lang.String autoChildName,
                                    FormItem properties)
                                      throws java.lang.IllegalStateException

      Sets the properties for creating a `FormItem` AutoChild named `autoChildName`.

      `properties` must not have already been created (`properties.isCreated()` must be `false`).

      NOTE: Overrides at override points are not applied to AutoChildren created from `properties`; that is, if the Java `Class` of `properties` overrides a Smart GWT override point, the custom method implementation will not be called.

      Throws:
        `java.lang.IllegalStateException` - if `properties` has been created.
      See Also:
        `AutoChildUsage`

    - #### setAutoChildProperties

          public void setAutoChildProperties(java.lang.String autoChildName,
                                    DrawItem properties)
                                      throws java.lang.IllegalStateException

      Sets the properties for creating a `DrawItem` AutoChild named `autoChildName`.

      `properties` must not have already been created (`properties.isCreated()` must be `false`).

      NOTE: Overrides at override points are not applied to AutoChildren created from `properties`; that is, if the Java `Class` of `properties` overrides a Smart GWT override point, the custom method implementation will not be called.

      Throws:
        `java.lang.IllegalStateException` - if `properties` has been created.
      See Also:
        `AutoChildUsage`

    - #### setAutoChildProperties

          public void setAutoChildProperties(java.lang.String autoChildName,
                                    EditProxy properties)
                                      throws java.lang.IllegalStateException

      Sets the properties for creating an AutoChild named `autoChildName`.

      `properties` must not have already been created (`properties.isCreated()` must be `false`).

      Throws:
        `java.lang.IllegalStateException` - if `properties` has been created.
      See Also:
        `AutoChildUsage`

    - #### setAutoChildVisibility

          public void setAutoChildVisibility(java.lang.String autoChildName,
                                    boolean visible)

      Sets whether to create and show the AutoChild named `autoChildName`.

      NOTE: This API is not valid for all AutoChildren because some AutoChildren cannot be hidden without destroying the main functions of the component.

      Parameters:
        `autoChildName` - name of an AutoChild
        `visible` - whether to show the AutoChild

    - #### getCanvasAutoChild

          public final Canvas getCanvasAutoChild(java.lang.String autoChildName)

      Returns the `Canvas` AutoChild named `autoChildName` if already created.
      Parameters:
        `autoChildName` - name of an AutoChild to return.
      Throws:
        `java.lang.RuntimeException` - if the AutoChild is not a SmartClient `Canvas` object.

    - #### getFormItemAutoChild

          public final FormItem getFormItemAutoChild(java.lang.String autoChildName)

      Returns the `FormItem` AutoChild named `autoChildName` if already created.
      Parameters:
        `autoChildName` - name of an AutoChild to return.
      Throws:
        `java.lang.RuntimeException` - if the AutoChild is not a SmartClient `FormItem` object.

    - #### getDrawItemAutoChild

          public final DrawItem getDrawItemAutoChild(java.lang.String autoChildName)

      Returns the `DrawItem` AutoChild named `autoChildName` if already created.
      Parameters:
        `autoChildName` - name of an AutoChild to return.
      Throws:
        `java.lang.RuntimeException` - if the AutoChild is not a SmartClient `DrawItem` object.

    - #### setProportionalResizeModifiers

          public void setProportionalResizeModifiers(java.lang.String... proportionalResizeModifiers)
                                              throws java.lang.IllegalStateException

      If `proportionalResizing` is set to `ProportionalResizeMode.MODIFIER` or `ProportionalResizeMode.MODIFIER_OFF` then proportional resizing of the DrawItem is activated or deactivated, respectively, whenever at least one key in this set of modifier keys is pressed.

      The keys allowed in this set are: "Alt", "Ctrl", and "Shift". If this set of keys is empty then proportional resizing is always used if `proportionalResizing` is `MODIFIER` and is never used if `proportionalResizing` is `MODIFIER_OFF`.

      Parameters:
        `proportionalResizeModifiers` - Default value is ["Shift"]
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getProportionalResizeModifiers

          public java.lang.String[] getProportionalResizeModifiers()

      If `proportionalResizing` is set to `ProportionalResizeMode.MODIFIER` or `ProportionalResizeMode.MODIFIER_OFF` then proportional resizing of the DrawItem is activated or deactivated, respectively, whenever at least one key in this set of modifier keys is pressed.

      The keys allowed in this set are: "Alt", "Ctrl", and "Shift". If this set of keys is empty then proportional resizing is always used if `proportionalResizing` is `MODIFIER` and is never used if `proportionalResizing` is `MODIFIER_OFF`.

      Returns:
        String...