# Class: ListBoxFormFieldCreateTool

## Core.Tools. ListBoxFormFieldCreateTool

Represents the tool for creating ListBox Form Field Placeholders

#### new ListBoxFormFieldCreateTool(docViewer)

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `docViewer` | Core.DocumentViewer | An instance of DocumentViewer.

### Extends

- Core.Tools.RectangleCreateTool

### Methods

#### addEventListener(type, fn [, options])

  Add a handler to the given event name

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number |  | The name of the event to listen to
  `fn` | function |  | The handler to be called when the event is triggered
  `options` | object | <optional> | Optional options object for addEventListener ###### Properties
  Name | Type | Description
  --- | --- | ---
  `once` | boolean | If true then the handler will be called only once

  Inherited From:
    - Core.EventHandler#addEventListener
  Overrides:
    - Core.Tools.RectangleCreateTool#addEventListener

  ##### Returns:

  Returns the object that 'addEventListener' is being called on
  Type
    object

  ##### Example

      annotManager.addEventListener('annotationChanged', (annotations, action) => {
        ...
      });

#### contextMenu(e)

  The function is called when a context menu should be shown. Use e.preventDefault to disable the default browser context menu.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object

  Inherited From:
    - Core.Tools.Tool#contextMenu
  Overrides:
    - Core.Tools.RectangleCreateTool#contextMenu

#### disableImmediateActionOnAnnotationSelection()

  Disable whether the tool should trigger an action immediately after clicking an annotation. When this is disabled you need to first click on annotation to select it before you can drag it. This behavior is disabled by default.
  Inherited From:
    - Core.Tools.AnnotationSelectTool#disableImmediateActionOnAnnotationSelection
  Overrides:
    - Core.Tools.RectangleCreateTool#disableImmediateActionOnAnnotationSelection

#### enableImmediateActionOnAnnotationSelection()

  Sets if the tool should trigger actions immediately after clicking an annotation. For example, if this is enabled then you can immediately click and drag an annotation without making a separate click to select the annotation.
  Inherited From:
    - Core.Tools.AnnotationSelectTool#enableImmediateActionOnAnnotationSelection
  Overrides:
    - Core.Tools.RectangleCreateTool#enableImmediateActionOnAnnotationSelection

  ##### Example

      To enable this for one tool (The Pan tool, for example), this can be done:

      const tool = docViewer.getTool(window.Core.Tools.ToolNames.PAN);
      tool.enableImmediateActionOnAnnotationSelection();

      To enable this for all selection tools, this can be done:

      const allTools = Object.values(docViewer.getToolModeMap());
      for (const tool of allTools) {
        if (tool instanceof Tools.AnnotationSelectTool) {
          tool.enableImmediateActionOnAnnotationSelection();
        }
      }

#### getDocumentViewer()

  Returns the instance of DocumentViewer for this tool.
  Inherited From:
    - Core.Tools.Tool#getDocumentViewer
  Overrides:
    - Core.Tools.RectangleCreateTool#getDocumentViewer

  ##### Returns:

  The instance of DocumentViewer for this tool.
  Type
    Core.DocumentViewer

#### getMouseLocation(e)

  Takes an event object from a mouse event and converts the location into window coordinates

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates

  Inherited From:
    - Core.Tools.Tool#getMouseLocation
  Overrides:
    - Core.Tools.RectangleCreateTool#getMouseLocation

  ##### Returns:

  Returns an object with x and y coordinates of the mouse cursor in the viewer
  Type
    Core.Math.Point

#### keyDown(e)

  The function is called when a keyboard key is down.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing keyboard key data.

  Inherited From:
    - Core.Tools.Tool#keyDown
  Overrides:
    - Core.Tools.RectangleCreateTool#keyDown

#### mouseDoubleClick(e)

  The function is called when the mouse left button is double clicked.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseDoubleClick
  Overrides:
    - Core.Tools.RectangleCreateTool#mouseDoubleClick

#### mouseLeftDown(e)

  The function called when the left mouse button is down

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseLeftDown
  Overrides:
    - Core.Tools.RectangleCreateTool#mouseLeftDown

#### mouseLeftUp(e)

  The function called when the left mouse button is up. Typically, annotations are created and added to the annotation manager at this point.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseLeftUp
  Overrides:
    - Core.Tools.RectangleCreateTool#mouseLeftUp

#### mouseMove(e)

  The function called when the mouse moves.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseMove
  Overrides:
    - Core.Tools.RectangleCreateTool#mouseMove

#### mouseRightDown(e)

  The function called when the right mouse button is down.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseRightDown
  Overrides:
    - Core.Tools.RectangleCreateTool#mouseRightDown

#### off( [type] [, fn])

  Remove a handler of the given event name

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number | <optional> | The name of the event to remove the handler of. If type is undefined, all the handlers of the object will be removed
  `fn` | function | <optional> | The handler associated with this event to be removed. If fn is undefined, all the handlers of the given event name will be removed

  Inherited From:
    - Core.EventHandler#off
  Overrides:
    - Core.Tools.RectangleCreateTool#off
  Deprecated:
    - Since version 8.0. Use removeEventListener instead.

  ##### Returns:

  Returns the object that 'off' is being called on
  Type
    object

  ##### Example

      annotManager.off();
      annotManager.off('annotationChanged');
      annotManager.off('annotationChanged', fn);

#### on(type, fn)

  Add a handler to the given event name

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | number | The name of the event to listen to
  `fn` | function | The handler to be called when the event is triggered

  Inherited From:
    - Core.EventHandler#on
  Overrides:
    - Core.Tools.RectangleCreateTool#on
  Deprecated:
    - Since version 8.0. Use addEventListener instead.

  ##### Returns:

  Returns the object that 'on' is being called on
  Type
    object

  ##### Example

      annotManager.on('annotationChanged', (annotations, action) => {
        ...
      });

#### one(type, fn)

  Same as 'on' except the handler will be called only once

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | number | The name of the event to listen to
  `fn` | function | The handler to be called when the event is triggered

  Inherited From:
    - Core.EventHandler#one
  Overrides:
    - Core.Tools.RectangleCreateTool#one
  Deprecated:
    - Since version 8.0. Use addEventListener with {'once': true} as options instead.

  ##### Returns:

  Returns the object that 'one' is being called on
  Type
    object

  ##### Example

      annotManager.one('annotationChanged', (annotations, action) => {
       ...
      });

#### removeEventListener( [type] [, fn])

  Remove a handler of the given event name

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number | <optional> | The name of the event to remove the handler of. If type is undefined, all the handlers of the object will be removed
  `fn` | function | <optional> | The handler associated with this event to be removed. If fn is undefined, all the handlers of the given event name will be removed

  Inherited From:
    - Core.EventHandler#removeEventListener
  Overrides:
    - Core.Tools.RectangleCreateTool#removeEventListener

  ##### Returns:

  Returns the object that 'removeEventListener' is being called on
  Type
    object

  ##### Example

      annotManager.removeEventListener();
      annotManager.removeEventListener('annotationChanged');
      annotManager.removeEventListener('annotationChanged', fn);

#### setEnableImmediateActionOnAnnotationSelection(enable)

  Set if the tool should trigger action immediately after clicking an annotation. For example, if this is enabled then you can immediately click and drag an annotation without making a separate click to select the annotation.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `enable` | boolean | A boolean indicating whether actions are triggered immediately on clicking on an annotation

  Inherited From:
    - Core.Tools.AnnotationSelectTool#setEnableImmediateActionOnAnnotationSelection
  Overrides:
    - Core.Tools.RectangleCreateTool#setEnableImmediateActionOnAnnotationSelection
  Deprecated:
    - since version 8.0 Please use enableImmediateActionOnAnnotationSelection or disableImmediateActionOnAnnotationSelection instead

  ##### Example

      To enable this for one tool (The Pan tool, for example), this can be done:

      const tool = docViewer.getTool(window.Core.Tools.ToolNames.PAN);
      tool.setEnableImmediateActionOnAnnotationSelection(true);

      To enable this for all selection tools, this can be done:

      const allTools = Object.values(docViewer.getToolModeMap());
      for (const tool of allTools) {
        if (tool instanceof Tools.AnnotationSelectTool) {
          tool.setEnableImmediateActionOnAnnotationSelection(true);
        }
      }

#### setMaximumAnnotationSizeWhenResizing(maximumAnnotationSizeGetterFunction)

  Sets the maximum size of annotations when resizing.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `maximumAnnotationSizeGetterFunction` | function | A function that receives the annotation being resized and returns an object with width and height values that represent the maximum width and height the annotation should be allowed to resize to.

  Inherited From:
    - Core.Tools.AnnotationSelectTool#setMaximumAnnotationSizeWhenResizing
  Overrides:
    - Core.Tools.RectangleCreateTool#setMaximumAnnotationSizeWhenResizing

  ##### Example

      instance.Core.Tools.AnnotationSelectTool.setMaximumAnnotationSizeWhenResizing((annotation) => {
        if (annotation instanceof instance.Annotations.RectangleAnnotation) {
          // maximum size for rectangles
          return { width: 100, height: 30 };
        }
        // no maximum size for other types
        return null;
      });

#### setMinimumAnnotationSizeWhenResizing(minimumAnnotationSizeGetterFunction)

  Sets the minimum size of annotations when resizing.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `minimumAnnotationSizeGetterFunction` | function | A function that receives the annotation being resized and returns an object with width and height values that represent the minimum width and height the annotation should be allowed to resize to.

  Inherited From:
    - Core.Tools.AnnotationSelectTool#setMinimumAnnotationSizeWhenResizing
  Overrides:
    - Core.Tools.RectangleCreateTool#setMinimumAnnotationSizeWhenResizing

  ##### Example

      instance.Core.Tools.AnnotationSelectTool.setMinimumAnnotationSizeWhenResizing((annotation) => {
        if (annotation instanceof instance.Annotations.RectangleAnnotation) {
          // minimum size for rectangles
          return { width: 100, height: 30 };
        }
        // no minimum size for other types
        return null;
      });

#### setName(name)

  Set the name of the tool, which can be accessed by toolObject.name

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `name` | string | Name of the tool

  Inherited From:
    - Core.Tools.Tool#setName
  Overrides:
    - Core.Tools.RectangleCreateTool#setName

#### setStyles(newStyles)

  Set the style for the tool, which will be applied to annotations drawn afterwards

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `newStyles` | object | function | if an object is used, it should contain properties of the new styles. If a function is used, the current styles will be passed as its argument and the function should return an object which contains properties of the new styles. Example of valid properties: StrokeColor, TextColor, FillColor, FontSize, Opacity, StrokeThickness, Precision, Scale, OverlayText, Style and Dashes.

  Inherited From:
    - Core.Tools.Tool#setStyles
  Overrides:
    - Core.Tools.RectangleCreateTool#setStyles

#### switchIn(oldTool)

  The function is called when this tool is selected. Typically use for changing mouse cursors, and initializing states for the tool.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `oldTool` | Core.Tools.Tool | The Tool class that was previously selected.

  Inherited From:
    - Core.Tools.Tool#switchIn
  Overrides:
    - Core.Tools.RectangleCreateTool#switchIn

#### switchOut(newTool)

  The function is called when this tool is deselected. Typically use for changing mouse cursors, and cleaning up states for the tool.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `newTool` | Core.Tools.Tool | The Tool class that was newly selected.

  Inherited From:
    - Core.Tools.Tool#switchOut
  Overrides:
    - Core.Tools.RectangleCreateTool#switchOut

#### trigger(type [, data])

  Calls the handlers of the event name with given data

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number |  | event name of which the handlers will be called.
  `data` | * | <optional> | data that will be passed to the handlers. If data is an array, it will be spread and then passed to the handlers

  Inherited From:
    - Core.EventHandler#trigger
  Overrides:
    - Core.Tools.RectangleCreateTool#trigger

  ##### Returns:

  Returns the object that 'trigger' is being called on
  Type
    object

  ##### Example

      annotManager.trigger('annotationChanged');
      annotManager.trigger('annotationChanged', [[annotation], 'add', {}]);

### Events

#### annotationAdded

  Triggered when an annotation has been added to the document by the tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation | The annotation that was added

  Inherited From:
    - Core.Tools.GenericAnnotationCreateTool#event:annotationAdded
  Overrides:
    - Core.Tools.RectangleCreateTool#event:annotationAdded

#### annotationCreated

  Triggered when an annotation has been created by the tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotations` | Core.Annotations.Annotation | The annotation that was created

  Inherited From:
    - Core.Tools.GenericAnnotationCreateTool#event:annotationCreated
  Overrides:
    - Core.Tools.RectangleCreateTool#event:annotationCreated

#### Search results